外键是否可选

时间:2013-08-21 11:10:40

标签: sql foreign-keys relation

Table employee
{
employeename  //employeename is unique
}

Table job
{
jobid,job,assignedPerson,status
}

assignedPerson是引用employeename(employee)的外键 我想要的是知道如何删除员工记录而不必从工作表中删除他的记录,即我的意思是我想保留工作记录,看看哪个人被分配了工作,即使那个人不再是雇员。

Table employee
{
employeename
}

Table jobemployee
{
jobid,assignedPerson
}

Table job
{
jobid,job,status
}

即使我这样做,如果我想从“员工”表中删除员工的记录,我将不得不从jobemployee删除记录,并且无法知道哪个人被分配了工作。
请帮忙..

1 个答案:

答案 0 :(得分:1)

最好的选择是为deleted的员工表添加一个标志。

解决方法是将列assignedNonEmployee添加到job表。在删除employee之前,您需要将assignedPerson列设置为null,并将其值复制到assignedNonEmployee列。由于后一列没有外键约束,因此现在允许您删除employee记录。