Jav*_*gon 1 oracle foreign-keys
最近,我一直在尝试在表中添加以下外键,在 Oracle 中使用 RESTRICT 子句使用以下命令。:
ALTER TABLE
Employee_SalHead
ADD CONSTRAINT PAYROLL_SHEAD_FKEY FOREIGN KEY
(
SalHead_ID
)
REFERENCES SalHead
(
SalHead_ID
)
ON DELETE RESTRICT ENABLE;
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误:
错误从命令中的第 11 行开始 - ALTER TABLE Employee_SalHead ADD CONSTRAINT PAYROLL_SHEAD_FKEY FOREIGN KEY (SalHead_ID) REFERENCES SalHead (SalHead_ID) ON DELETE RESTRICT ENABLE 错误报告 - SQL 错误:ORA-009009005 关键字“丢失”关键字 *000000000005原因:
*动作:
此外,如果我通过 Oracle SQL 开发人员尝试相同的操作,我只会得到选项 Set Null、Cascade 和 No Action Only。
Oracle 仅支持ON DELETE SET NULL和ON DELETE CASCADE. 您只需执行以下查询即可满足您的要求。无需提及ON DELETE RESTRICT
ALTER TABLE Employee_SalHead
ADD CONSTRAINT PAYROLL_SHEAD_FKEY FOREIGN KEY(SalHead_ID)
REFERENCES SalHead(SalHead_ID);
Run Code Online (Sandbox Code Playgroud)
ON DELETE NO ACTION是默认值。从文档
No Action(默认)选项指定如果结果数据违反引用完整性约束,则不能更新或删除引用的键值。例如,如果一个主键值被外键中的一个值引用,那么由于依赖数据,不能删除被引用的主键值。