<referential integrity =“”>如何使用ON DELETE CASCADE删除元组并将其设置为null </reference>

时间:2012-10-18 23:36:43

标签: sql cascade

我是使用SQL开发人员的新手。

这是我班级的新成员,我创建了员工 - 经理关系表。

和案例a。如果经理失去工作,那么经理领域应该设置为空。

和案例b。如果经理失去工作,那么他的员工也会失去工作。

我的表看起来像这样

lastName | jobTitle | Department | employeeID | fk_employeeID | fk_employeeID1

我不确定为什么我会得到2个employeeID。

这是我的DDL代码:

CREATE TABLE Employee
(
    lastName varchar (255),
    jobTitle varchar (255),
    Department varchar (255),
    id_Employee integer,
    fk_Employeeid_Employee integer NOT NULL,
    fk_Employeeid_Employee1 integer,
    PRIMARY KEY(id_Employee),
    UNIQUE(fk_Employeeid_Employee),
    FOREIGN KEY(fk_Employeeid_Employee) REFERENCES Employee (id_Employee),
    FOREIGN KEY(fk_Employeeid_Employee1) REFERENCES Employee (id_Employee)
)

我想我必须在a和b上使用“删除级联”,如果你知道怎么做,请帮忙。

1 个答案:

答案 0 :(得分:1)

你的作业可能有点晚了,但万一有其他人出现。

CREATE TABLE Employee
(
    lastName varchar (255),
    jobTitle varchar (255),
    Department varchar (255),
    id_Employee integer,
    fk_Employeeid_Employee integer NOT NULL,
    fk_Employeeid_Employee1 integer,
    PRIMARY KEY(id_Employee),
    UNIQUE(fk_Employeeid_Employee),
    FOREIGN KEY(fk_Employeeid_Employee) REFERENCES Employee (id_Employee)
    ON UDPATE CASCADE ON DELETE SET NULL,
    FOREIGN KEY(fk_Employeeid_Employee1) REFERENCES Employee (id_Employee)
    ON UDPATE CASCADE ON DELETE SET NULL
)

我不确定为什么你有多个fk_employeeID ...我假设这是员工经理的id。如果是这种情况,上面的代码应该做你想要的。如果删除管理器,则fk_employeeID字段将设置为null。此外,对经理ID的任何更改都将反映在外键字段中。

希望有所帮助,