最近我一直在尝试使用以下命令在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。
答案 0 :(得分:4)
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 是默认值。 来自Documentation
“无操作(默认)”选项指定如果结果数据违反参照完整性约束,则无法更新或删除引用的键值。例如,如果主键中的值引用了主键值,则由于依赖数据,无法删除引用的主键值。