SQL:当子项不存在时删除父项
我有两张桌子: 受雇人SQL:当子项不存在时删除父项,sql,stored-procedures,parent-child,Sql,Stored Procedures,Parent Child,我有两张桌子: 受雇人 EmployeeID (PK), Name, Age, Department TBL设计 EmployeeID(FK), Designation, DesignationID 我需要帮助编写一个存储过程,仅当指定表中没有记录时才删除员工记录。(只有在没有指定的情况下才删除employeeID) 我不确定是否应该使用ON DELETE RESTRICT约束或not EXISTS子句 你可以试试下面的方法 DELETE E FROM tblEmployee E LEFT
EmployeeID (PK), Name, Age, Department
TBL设计
EmployeeID(FK), Designation, DesignationID
我需要帮助编写一个存储过程,仅当指定表中没有记录时才删除员工记录。(只有在没有指定的情况下才删除employeeID)
我不确定是否应该使用ON DELETE RESTRICT约束或not EXISTS子句 你可以试试下面的方法
DELETE
E
FROM
tblEmployee E
LEFT JOIN tblDesignation D
ON E.EmployeeID = D.EmployeeID
WHERE
D.EmployeeID IS NULL
希望这有帮助 您可以使用以下代码。请解释一下语法
create procedure usp_deleteemployee
as
begin
delete from tblEmployee
where id not in (select empid from tblDesignation);
end
或者你也可以尝试使用exist。不确定语法
DELETE tblEmployee
FROM tblEmployee
WHERE NOT EXISTS (SELECT 1
FROM tblDesignation
WHERE tblEmployee.Id = tblDesignation.empid)
如果您能分享到目前为止您为获得输出所做的努力,我们将不胜感激。过程代码是高度特定于供应商的-因此请添加一个标记,以指定您是否正在使用
mysql
,postgresql
,sql server
,oracle
或db2
或其他完全不同的东西。我正在使用SQL server。谢谢,但我想用ID删除它。我不想删除所有记录。为EmployeeID创建一个参数,并仅删除我为其提供EmployeeID值的记录。