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;