如何验证是否已在 SQL 服务器中删除行

How to verify if a row has been deleted in SQL server

本文关键字:SQL 服务器 删除行 是否 何验证 验证      更新时间:2023-10-16

我有一个要求,只有在从表中实际删除了一行时,我才必须在C++代码中记录一条消息。有没有办法从SQL Server 2012获取删除语句实际上删除了一行的确认消息?计数 (*( 无济于事,因为有多个客户端将数据填充到表中。所以不能依靠前后计数。

提前致谢

我个人使用非常简单的方法。

当我从表中删除一行时,我知道它的主键,它的ID。我在 DELETE ... WHERE ... 语句中使用此主键值。然后我使用相同的ID进行SELECT ... WHERE ...并检查它返回了多少行。如果没有返回任何行,我确定该行已成功删除。或者SELECT COUNT(*) WHERE ...与该ID一起使用并检查计数。

使用这种方法的情况是我有很多与我要从中删除行的表相关的子表。所有相关表都配置了外键和参照完整性约束。所有约束都是简单的CHECK CONSTRAINT没有级联删除。如果用户确实需要从主表中删除一行,他必须首先删除所有子行。如果用户尝试从主行中删除时仍有相关的子行,则删除将由于引用约束而失败。

此外,还有@@ROWCOUNT或ROWCOUNT_BIG:

返回受上一条语句影响的行数。如果 行数超过20亿,使用ROWCOUNT_BIG。

DELETE语句后立即使用 SELECT @@ROWCOUNT

请参阅此问题:使用 t-SQL 选择已删除记录的数量