我有以下代碼:什麼值應該.net SqlCommand.ExecuteNonQuery()返回,如果沒有行受到影響?
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. I was expecting it to be 0。 Table1上沒有觸發器。我錯過了什麼嗎?爲什麼是1?
附錄:好的,現在當我在數據庫中運行sql時,它會刪除一行。請注意,在進行所有測試之前,我從僅爲此目的保存的備份中恢復數據庫。我發誓,今天早上或昨天下午沒有刪除任何行,是的,這是在恢復備份之後。我會讓我瘋狂的藥丸磨損,並在今天下午重新審視這個問題。希望更清晰的頭腦。
你是如何驗證這個SQL刪除數據庫中沒有行的? – 2010-05-27 14:20:16
通過在SqlServer Management Studio中直接在數據庫中運行實際的SQL,並查看結果是什麼。 – peacedog 2010-05-27 14:27:46
是否有可能找回子查詢中的行? – 2010-05-27 14:41:45