Servus @ all
Habe folgende Tabellen in Oracle:
XML_GEMEINDEN
xgem_key NUMBER ---> PK
oestat VARCHAR2(30)
version NUMBER(5)
XML_BETRIEBE
xbnr_key NUMBER ---> PK
betriebsnr NUMBER(10)
uvmnr NUMBER(5),
xgem_key NUMBER ---> KF
Diese beiden habe ich nun erstellt und den FK definiert:
CREATE TABLE xml_gemeinden
(
xgem_key NUMBER
CONSTRAINT pk_xml_gemeinden PRIMARY KEY,
oestat VARCHAR2(30),
version NUMBER(5),
);
CREATE TABLE xml_betriebe
(
xbnr_key NUMBER
CONSTRAINT pk_xml_betriebe PRIMARY KEY,
betriebnr NUMBER(10),
uvmnr NUMBER(5),
xgem_key CONSTRAINT nn_xgem_key NOT NULL
CONSTRAINT fk_xml_betriebe_xml_gemeinden REFERENCES
xml_gemeinden(xgem_key),
);
Nun habe ich für die Tabelle XML_Gemeinden eine fortlaufende ID für den PK erstellt:
Das gleiche habe ich auch mit xml_betriebe gemacht.
CREATE SEQUENCE seq_gemeinden start WITH 1 increment BY 1 nomaxvalue;
CREATE OR REPLACE TRIGGER gemeinden_trigger
before INSERT ON xml_gemeinden
FOR each row
BEGIN
IF :new.xgem_key IS NULL THEN
SELECT seq_gemeinden.nextval INTO :new.xgem_key FROM dual;
END IF;
END;
/
Somit wird nach jedem neuen INSERT eine eindeutige neue ID_Nr vergeben.
NUN MEINE FRAGE:
Wenn ich in der Tabelle XML_Gemeinden ein neues INSERT mache so habe wird eine neue ID erstellt mit meinen Daten.
Wie erkennt bzw. übernimmt nun aber der FK in der Tabelle XML_Betriebe (xgem_key) auch die neue selbe ID die bei XML_Gemeinden erstellt wurde
Wenn ich in XML_Betriebe mit INSERT etwas anlege dann muss ich ja den FK händisch eingeben ... sollte aber von selbst gehen oder
insert into xml_betriebe values(' der autom. key durch trigger' , ' betriebsnr', ' uvmnr ' ,
' hier kommt nun der xgem_key (FK) ');
es muss doch gehn das der xgem_key von selbst erstellt wird
oder? (ich mein indem er vom PK lernt)
Hoffe irgendwer weiss, was ich damit meine *gg*
DANKE.
Cya olek
Habe folgende Tabellen in Oracle:
XML_GEMEINDEN
xgem_key NUMBER ---> PK
oestat VARCHAR2(30)
version NUMBER(5)
XML_BETRIEBE
xbnr_key NUMBER ---> PK
betriebsnr NUMBER(10)
uvmnr NUMBER(5),
xgem_key NUMBER ---> KF
Diese beiden habe ich nun erstellt und den FK definiert:
CREATE TABLE xml_gemeinden
(
xgem_key NUMBER
CONSTRAINT pk_xml_gemeinden PRIMARY KEY,
oestat VARCHAR2(30),
version NUMBER(5),
);
CREATE TABLE xml_betriebe
(
xbnr_key NUMBER
CONSTRAINT pk_xml_betriebe PRIMARY KEY,
betriebnr NUMBER(10),
uvmnr NUMBER(5),
xgem_key CONSTRAINT nn_xgem_key NOT NULL
CONSTRAINT fk_xml_betriebe_xml_gemeinden REFERENCES
xml_gemeinden(xgem_key),
);
Nun habe ich für die Tabelle XML_Gemeinden eine fortlaufende ID für den PK erstellt:
Das gleiche habe ich auch mit xml_betriebe gemacht.
CREATE SEQUENCE seq_gemeinden start WITH 1 increment BY 1 nomaxvalue;
CREATE OR REPLACE TRIGGER gemeinden_trigger
before INSERT ON xml_gemeinden
FOR each row
BEGIN
IF :new.xgem_key IS NULL THEN
SELECT seq_gemeinden.nextval INTO :new.xgem_key FROM dual;
END IF;
END;
/
Somit wird nach jedem neuen INSERT eine eindeutige neue ID_Nr vergeben.
NUN MEINE FRAGE:
Wenn ich in der Tabelle XML_Gemeinden ein neues INSERT mache so habe wird eine neue ID erstellt mit meinen Daten.
Wie erkennt bzw. übernimmt nun aber der FK in der Tabelle XML_Betriebe (xgem_key) auch die neue selbe ID die bei XML_Gemeinden erstellt wurde
Wenn ich in XML_Betriebe mit INSERT etwas anlege dann muss ich ja den FK händisch eingeben ... sollte aber von selbst gehen oder
insert into xml_betriebe values(' der autom. key durch trigger' , ' betriebsnr', ' uvmnr ' ,
' hier kommt nun der xgem_key (FK) ');
es muss doch gehn das der xgem_key von selbst erstellt wird
oder? (ich mein indem er vom PK lernt)
Hoffe irgendwer weiss, was ich damit meine *gg*
DANKE.
Cya olek