外键删除限制错误- Oracle



最近我一直试图在表中添加以下外键,在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 NULLON 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(默认)选项指定,如果结果数据违反引用完整性约束,则不能更新或删除引用的键值。例如,如果一个主键值被外键中的值引用,那么由于依赖数据,被引用的主键值不能被删除。

最新更新