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

本文关键字:两个 删除 ID 第一个 返回 useng | 更新日期: 2023-09-27 18:35:23

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

谢谢。

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

如何在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);