我有以下代码:
int result = -1;
StringBuilder sb = new StringBuilder();
SqlCommand cmd = MyConnection.
sb.AppendLine("delete from Table1 where ID in");
sb.AppendLine("(select id from Table1 t1 where not exists(select * from Table2 t2 where t2.Table1ID = t1.ID))");
cmd.CommandText = sb.ToString();
result = cmd.ExecuteNonQuery();
_log.Info("StoredXMLDocument Records Deleted: " + result.ToString());
该 SQL 采用更易读的格式,是:
delete from Table1 where ID in
(select id from Table1 t1 where not exists(select * from Table2 t2 where t2.Table1ID = t1.ID))
我知道当直接在数据库中执行 SQL 时,不会删除任何行。然而,当这段代码运行时,结果的值为 1。 我原以为它是 0。表 1 上没有触发器。我错过了什么吗?为什么是1?
附录:好的,现在当我在数据库中运行 sql 时,它会删除一行。请注意,在所有测试之前,我从为此目的保存的备份中恢复数据库。我发誓它今天早上或昨天下午没有删除任何行,是的,那是在恢复备份之后。我要让我疯狂的药丸消退,今天下午重新讨论这个问题。希望头脑更清晰。