» »

oracle 12 identity (the old way)

oracle 12 identity (the old way)

detroit ::

Naredil sem tabelo sekvenco in trigger, pa mi trigger javlja da je invalid in da je fialal revalidation.
spodaj je ves sql. In ja razumem da ima 12 že identity, samo bom kasneje migriral na 11g. Nimam ravno veliko izkušenj iz oraclom (to je prva:)

Kdo opazi kakšno napako? Hvaaalaa
CREATE TABLE tabela 
(
    "nekaj_ID" NUMBER(10), 
	"DATUM" TIMESTAMP WITH LOCAL TIME ZONE NOT NULL,
	"ST" VARCHAR2(20)
);	

ALTER TABLE tabela ADD
	CONSTRAINT nekaj_pk PRIMARY KEY (nekaj_ID);

CREATE SEQUENCE nekaj_seq start with 1 increment by 1;

CREATE OR REPLACE TRIGGER nekaj_seq_trig 
BEFORE INSERT ON tabela 
FOR EACH ROW
BEGIN
  SELECT nekaj_seq.NEXTVAL
  INTO   :NEW.nekaj_ID
  FROM   dual;
END;
/


INSERT INTO tabela (ST)
values (CURRENT_TIMESTAMP, 'Testna 1/2/3');

Skero

detroit ::

p.s. uporabil sem tudi referencing NEW AS NEW
Skero

aaa1 ::

if it helps :)

REATE TABLE tabela 
(
   "nekaj_ID" NUMBER(10), 
   "DATUM" TIMESTAMP WITH LOCAL TIME ZONE NOT NULL,
   "ST" VARCHAR2(20)
);  


ALTER TABLE tabela ADD
   CONSTRAINT tabela_pk PRIMARY KEY ("nekaj_ID"); --manjkajo narekovaji

CREATE SEQUENCE nekaj_seq start with 1 increment by 1;

CREATE OR REPLACE TRIGGER nekaj_seq_trig 
BEFORE INSERT ON tabela 
FOR EACH ROW
BEGIN
 SELECT xxx_jt_nekaj_seq.NEXTVAL
 INTO   :NEW."nekaj_ID" --manjkajo narekovaji
 FROM   dual;
END;
/

--manjka datum
insert into tabela(DATUM,st) values (CURRENT_TIMESTAMP, 'Testna 1/2/3');

detroit ::

Hvala za odgovor

v moji verziji so narekovaji (1)
spodaj niso bili ampak sem dodal ampak je isti error.

Glede manjka datum pa si predstavljam da current_timestamp je funkcija? Anyhow sem tudi datum field ven vrgel


p.s. kaj je tisti xxx_jt na vrstici 18 ?
Skero

Zgodovina sprememb…

  • spremenil: detroit ()

detroit ::

sem še uradni primer
-- Create a table with an old-style identity column populated using a trigger.
CREATE TABLE trigger_identity (
  id           NUMBER  NOT NULL,
  description  VARCHAR2(30)
);

CREATE SEQUENCE trigger_identity_seq;

CREATE OR REPLACE TRIGGER trigger_identity_bir 
BEFORE INSERT ON trigger_identity 
FOR EACH ROW
WHEN (new.id IS NULL)
BEGIN
  :new.id := trigger_identity_seq.NEXTVAL;
END;
/


sprobal in isti error hmm... out of ideas
Skero

prozac ::

meni tle lepo naredi:

CREATE TABLE tabela 
(
    nekaj_ID NUMBER(10), 
    DATUM TIMESTAMP WITH LOCAL TIME ZONE NOT NULL,
    ST VARCHAR2(20)
);  
 
ALTER TABLE tabela ADD
    CONSTRAINT nekaj_pk PRIMARY KEY (nekaj_ID);
 
CREATE SEQUENCE nekaj_seq start with 1 increment by 1;
 
CREATE OR REPLACE TRIGGER nekaj_seq_trig 
BEFORE INSERT ON tabela 
FOR EACH ROW
BEGIN
  SELECT nekaj_seq.NEXTVAL
  INTO   :NEW.nekaj_ID
  FROM   dual;
END;
/
 
 
INSERT INTO tabela (datum, ST)
values (CURRENT_TIMESTAMP, 'Testna 1/2/3');

detroit ::

Prozac hvala tudi sam sm mnenja da je nakaj narobe z našo bazo (pravice ipd), ker sem uradni sample sprobal. Hvala !

Če bo komu pomagalo Entity framework z oracle data provider ne deluje če imaš IDENTITY column (oracle 12c) z NUMBER brez neke velikosti (like number(10)).
V tem primeru ti ne zgradi modela če imaš vklopljeno foreign key option ob izdelavi edmxa from db.
Skero

Zgodovina sprememb…

  • spremenil: detroit ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

PL SQL problem

Oddelek: Programiranje
15841 (410) killa bee
»

Učenje programiranja PHP

Oddelek: Programiranje
91371 (912) Spura
»

PostgreSQL pomoč

Oddelek: Programiranje
162368 (1861) Mato989
»

SQL Parent key not found

Oddelek: Programiranje
7977 (900) Ciklamen
»

SQL trigger Oracle

Oddelek: Programiranje
51109 (1017) PunXXX

Več podobnih tem