首页 > 解决方案 > DELETE 语句与 SQL 存储过程中的引用约束冲突

问题描述

我的 Employee 表的主键列是 ( EmpID),它在两个 Other 表 EmployeeEducationtable 和EmployeeBankInformationtable 中引用。

我想根据他们的 ID 删除员工,但是当我运行存储过程时,我的控制器会抛出由于EmpID列而导致外键引用约束冲突的错误。

ALTER PROCEDURE [dbo].[RemoveEmployee]
(
    @EmpID int
)
AS
BEGIN
    DELETE FROM Employee WHERE EmpID = @EmpID
    DELETE FROM EmployeeEducation WHERE EmpID = @EmpID
    DELETE FROM EmployeeBankInformation WHERE EmpID = @EmpID
END

我哪里错了?你们中的任何人都可以告诉我在我的程序中犯了什么错误吗?

标签: sqlsql-serverstored-proceduresssmssql-delete

解决方案


您非常接近,只需要最后删除员工:

ALTER PROCEDURE [dbo].[RemoveEmployee]
(
    @EmpID int
)
AS
BEGIN
    DELETE FROM EmployeeBankInformation WHERE EmpID = @EmpID
    DELETE FROM EmployeeEducation WHERE EmpID = @EmpID
    DELETE FROM Employee WHERE EmpID = @EmpID
END

推荐阅读