DELETE RESTRICT上的FOREIGN KEY错误 - Oracle

时间:2015-08-12 07:01:47

标签: 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;

这给了我以下错误:

  

从命令行第11行开始出错 - ALTER TABLE Employee_SalHead ADD   CONSTRAINT PAYROLL_SHEAD_FKEY FOREIGN KEY(SalHead_ID)   参考SalHead(SalHead_ID)关于删除限制的启用   错误报告 - SQL错误:ORA-00905:缺少关键字   00905. 00000 - "缺少关键字"   *原因:
  *操作:

此外,如果我通过Oracle SQL开发人员尝试相同的操作,我只会获得选项Set Null,Cascade和No Action Only。

1 个答案:

答案 0 :(得分:4)

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 是默认值。 来自Documentation

  

“无操作(默认)”选项指定如果结果数据违反参照完整性约束,则无法更新或删除引用的键值。例如,如果主键中的值引用了主键值,则由于依赖数据,无法删除引用的主键值。