2

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

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

对于案例 a。如果经理失去工作,则经理字段应设置为空。

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

我的桌子看起来像这样

lastName | jobTitle | Department | employeeID | fk_employeeID | fk_employeeID1

我不知道为什么我会得到 2 个员工 ID。

这是我的 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使用“删除级联”,如果你知道怎么做,请帮忙。

4

1 回答 1

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 字段将被设置为空。此外,对经理 ID 的任何更改都将反映在外键字段中。

希望有帮助,

于 2013-01-26T04:02:45.360 回答