目前我正面临一个oracle限制问题。
提交插入后,我的外键约束不会触发。它应该做的是给两个表具有相同的ID,但不幸的是只有一个带有主键的表正在给出一个ID。第二个表中包含外键的列保持为空。
For Instance:插入表t1(t1_id,name,dpt)值(value1(id为autoincrement的触发器),value2,value3);表2,表3后面的程序相同...所有约束都写得正确
ID Name Department
1 Joe HR
ID Project EmpID
1 new (null) -> must be 1
先谢谢你。
约束:ALTER TABLE "PROJECTS" ADD CONSTRAINT "EMP_FK" FOREIGN KEY ("EMP_ID")
REFERENCES "EMP" ("EMP_ID") ON DELETE CASCADE ENABLE
触发器:create or replace TRIGGER Projects_TRG BEFORE
INSERT ON Projects FOR EACH ROW BEGIN :NEW.Project_ID := Projects_SEQ.NEXTVAL;
END;
如何设置将父表中的父ID填充到子表中?
请注意我在我的申请中使用了不同的名字。
答案 0 :(得分:1)
您似乎误解了外键约束的目的。外键约束不会自动将约束值从父表传播到子表。约束的目的是确保子表中的键列的值在填充时具有父表的键列中的匹配值。您的应用程序负责确保子表上的键列填充适当的值。约束对你没有这样做。在子表的键列中使用NULL也是完全合法的,假设子表上的列没有NOT NULL约束。