最近我一直试图在表中添加以下外键,在Oracle中使用以下命令使用RESTRICT子句:
ALTER TABLE
Employee_SalHead
ADD CONSTRAINT PAYROLL_SHEAD_FKEY FOREIGN KEY
(
SalHead_ID
)
REFERENCES SalHead
(
SalHead_ID
)
ON DELETE RESTRICT ENABLE;
这给了我以下错误:
在command - ALTER TABLE Employee_SalHead ADD中从第11行开始错误约束PAYROLL_SHEAD_FKEY外键(SalHead_ID)引用SalHead (SalHead_ID)在删除限制启用错误报告- SQL错误:ORA-00905:缺少关键字00905. 00000 - "缺少关键字"*原因:
*行动:
同样,如果我通过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);
ON DELETE NO ACTION为默认值。从文档
No Action(默认)选项指定,如果结果数据违反引用完整性约束,则不能更新或删除引用的键值。例如,如果一个主键值被外键中的值引用,那么由于依赖数据,被引用的主键值不能被删除。