2017-01-03 1 views

Antwort

0

Ich bin mir nicht sicher, warum Sie zwei Tabellen brauchen, um die gleichen Daten zu speichern, Sie könnten dies mit einem tun. Wenn ich richtig verstanden habe, brauchst du so etwas:

--Main table 
CREATE TABLE "WORKORDER" 
    ( "ID" NUMBER(*,0) NOT NULL, 
     "ParentID" NUMBER(*,0), 
     "Status" VARCHAR2(128 BYTE) 
    ); 

--Constraint pk 
ALTER TABLE "WORKORDER" ADD (
    CONSTRAINT "WORKORDER_PK" PRIMARY KEY ("ID")); 

--Sequence 
CREATE SEQUENCE "WORK_SEQ" 
START WITH  1000 
INCREMENT BY 1 
NOCACHE 
NOCYCLE; 

--Trigger for sequence 
CREATE OR REPLACE TRIGGER "WORK_ID_TRIGGER" 
    BEFORE INSERT 
    ON "WORKORDER" 
    FOR EACH ROW 
BEGIN 
    SELECT WORK_SEQ.nextval 
    INTO :new."ID" 
    FROM DUAL; 
END; 

--Another table 
CREATE TABLE "ANOTHER" 
    ( "ID" NUMBER(*,0) NOT NULL, 
     "ParentID" NUMBER(*,0), 
     "Status" VARCHAR2(128 BYTE) 
    ); 

--Thirgger on child record inser populate another table. 
CREATE OR REPLACE TRIGGER "AFTER_CHILD_INSERT" 
AFTER INSERT 
ON "WORKORDER" 
FOR EACH ROW 
BEGIN 
    IF (:new."ParentID" IS NOT NULL) 
    THEN 
    INSERT INTO ANOTHER VALUES 
    (:new."ID", :new."ParentID", :new."Status"); 
    END IF; 
END; 
Verwandte Themen