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

时间:2014-12-19 03:01:57

标签: c++ sql-server delete-row

我有一个要求,即只有从表中实际删除了一行,我才必须在C ++代码中记录消息。有没有办法从SQL Server 2012获取确认消息,删除语句实际上删除了一行? Count(*)不会有用,因为有多个客户端将数据填入表中。所以不能依靠计数之前和之后。

提前致谢

1 个答案:

答案 0 :(得分:2)

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

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

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

此外,还有@@ROWCOUNTROWCOUNT_BIG

  

返回最后一个语句影响的行数。如果   行数超过20亿,使用ROWCOUNT_BIG。

SELECT @@ROWCOUNT声明后立即使用DELETE

请参阅此问题:Select number of deleted records with t-SQL