我是使用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上使用“删除级联”,如果你知道怎么做,请帮忙。
答案 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的任何更改都将反映在外键字段中。
希望有所帮助,