2017-01-03 44 views

回答

0

我不知道爲什麼你需要兩張表來存儲相同的數據,你可以用一個來做到這一點。如果我理解正確,你需要這樣的事情:

--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;