创建表格时。
错误消息显示SQL Error: ORA-03001: unimplemented feature
CREATE TABLE OrgChart
(
job_title VARCHAR(30) NOT NULL PRIMARY KEY,
emp_nbr INTEGER DEFAULT 0 NOT NULL REFERENCES Personnel(emp_nbr) ON
DELETE SET DEFAULT ON
UPDATE CASCADE,
boss_emp_nbr INTEGER REFERENCES Personnel(emp_nbr),
UNIQUE (emp_nbr, boss_emp_nbr),
salary DECIMAL (12,4) NOT NULL CHECK (salary >= 0.00)
);
如何声明允许从父表级联更新的外键,并在删除父行时将值设置为默认值(本例中为0)?
答案 0 :(得分:4)
Oracle不支持级联更新。删除父行时,它也不允许您将值设置为默认值。 on delete
行为的两个选项是cascade
或set null
。显然,如果您希望将列声明为set null
,则定义not null
行为是没有意义的。
通常,主键应该是不可变的。如果您打算允许更新列,则通常不应将列声明为主键。如果emp_nbr
需要更改(这似乎很奇怪),您可能需要一个不同的主键。如果员工被移除,您还希望员工留在OrgChart
表中,这也让我感到奇怪。如果您想允许组织结构图有一个没有员工的位置,您可能希望允许emp_nbr
中的OrgChart
可以为空,并声明外键为{{1} }。