繁体   English   中英

通过使用第一个表返回的ID从两个相关表中删除

[英]Delete from two related tables by useng ID returned from the first one

我想使用sqlcommand从相关表中删除2条记录(具有相同外键ID的记录)。 是否有像SCOPE_IDENTITY这样的返回最后一个ID的方法已被删除? 我不想使用ON DELETE CASCADE约束。 任何想法?

谢谢。

如何在SQL Server中获取已删除的标识号:

让我们拥有一个Employee表,其中保存了一些员工记录以及每个员工的唯一标识号。
现在,假设由于某些原因从Employee表中删除了一些记录,现在我们希望从Employee表中删除所有记录,由于从表中删除记录现在可能无法实现,但是我们可以获得唯一身份列表记录通过查询从Employee表中删除。

-- Create Employee Table
Create Table EMPLOYEE( ID int,EmpID int,EmpName varchar(50))

-- Insert Sample data to the Employee table
INSERT INTO EMPLOYEE VALUES ( 1, 1, 'Aasish')
INSERT INTO EMPLOYEE VALUES ( 2, 1, 'Anita');
INSERT INTO EMPLOYEE VALUES ( 3, 1, 'Kabita');
INSERT INTO EMPLOYEE VALUES ( 4, 2, 'Raj');
INSERT INTO EMPLOYEE VALUES ( 5, 2, 'Babita');
INSERT INTO EMPLOYEE VALUES ( 6, 2, 'Geet');
INSERT INTO EMPLOYEE VALUES ( 7, 2, 'Krishh');
INSERT INTO EMPLOYEE VALUES ( 8, 3, 'Kabir');
INSERT INTO EMPLOYEE VALUES ( 9, 3, 'Rasmita');
INSERT INTO EMPLOYEE VALUES ( 10, 3, 'Sam');

-- Delete data from the Employee table
DELETE EMPLOYEE WHERE ID IN(1,10,12);

--- Retrive the Employee table data after deleting the records
SELECT ID FROM EMPLOYEE
--- Retrive the deleted unique identity numbers from the Employee table
WITH Missing (missnum, maxid)
AS
( 
SELECT 1 AS missnum, (select max(id) from EMPLOYEE) UNION ALL SELECT missnum + 1, maxid FROM Missing 
WHERE missnum < maxid
)
SELECT missnum FROM Missing 
LEFT OUTER JOIN EMPLOYEE e on e.id = Missing.missnum
WHERE e.id is NULL OPTION (MAXRECURSION 0);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM