大家好我是数据库新手
我的问题是如何删除具有外键关系的表中的记录 假设我有一个2桌雇员&以deptID为关系的部门 现在我想删除表中的特定行,如“从depID = 10的部门删除”,如果部门中的员工被删除,我也想要保持外键关系。可以有人PLZ为我提供这样做的查询
由于
答案 0 :(得分:2)
您应指定删除级联到employee
表。取决于您的数据库如何执行此操作,但几乎每个数据库都支持级联删除。
例如在SQL Server中:
CREATE TABLE Employee
(
DepId INT NOT NULL REFERENCES Department(DepId) ON DELETE CASCADE
)
答案 1 :(得分:1)
这取决于数据库以及您如何定义关系。您可能导致删除级联,这意味着删除父级删除子记录,或“删除nullify”,这会导致子关系在其FK字段中具有NULL,或者您拥有什么。这取决于您的需求。通常情况下,我没有定义NULLIFY或CASCADE并根据需要删除每条记录,而不会自动处理。
答案 2 :(得分:0)
在SQL Server中,您将关系标记为CASCASE DELETE
或者,首先对Employees表执行DELETE,然后对Departments表执行第二次DELETE。
答案 3 :(得分:0)
建立外键关系时,您可以定义(在MS SQL Server中,无论如何)对更新和删除采取的操作。例如,您可以说“删除部门中的记录时,将删除级联到任何引用它的子表”。您可以找到更多信息here。
答案 4 :(得分:0)
DB2语法(因为您尚未指定使用哪个DB):
Create table Employee
...
...
FOREIGN KEY (deptID) REFERENCES department (deptID)
ON DELETE CASCADE
如果指定CASCADE选项,则在删除部门时将删除员工。
如果不是CASCADE,而是指定RESTRICT,它将不允许您删除dept,除非首先删除属于该部门的所有员工。
或者,如果您不希望每次都发生这种情况,那么最好指定RESTRICT并在emp的任何地方首先执行删除
Delete * from Employee where deptID = 10;
Delete * from Dept where deptID = 10;
以下是examples
的链接