有時我必須刪除不同表上的兩條記錄。我怎樣才能以某種方式執行查詢,如果一個失敗,另一個不會執行,反之亦然。換句話說,只有當兩個查詢都成功時數據庫纔會更新,否則不會做任何更改。這樣,如果我得到任何錯誤,我知道什麼都沒有改變。我在C#中執行此查詢爲:僅當所有查詢都成功執行時才更改數據庫
//qDelete is a string containing the query
// connection - SqlConnection
SqlCommand cmd = new SqlCommand(qDelete, connection);
try
{
var t = cmd.ExecuteNonQuery();
MessageBox.Show("Query succesfully executed \n \n" + "\n\n" + t + " records successfully deleted");
}
catch
{
//do something here to avoid having any changes to the database
}
這太棒了。我的sDelete字符串動態生成,唯一缺少的東西是將語句按正確的順序排列。我發現我必須首先刪除依賴表或表中的記錄,然後再從另一個表中刪除約束條件。我怎麼能看到哪個表依賴於其他表將幫助我構建這個查詢。我可以做一些事情,比如排序所有的字符串,然後放置那些沒有約束的表格,然後放置其他的。我怎樣才能找出哪個表取決於其他表使其更好?
你知道交易所用的版本是什麼嗎?它只是2008年還是以前的版本支持這個? – 2011-05-12 19:22:11
事務在數據庫數據維護方面有點兒大問題,所以我希望你能在任何給你ADO.NET的框架中訪問它們。當然.NET Framework 2.0和(VS2005)都會有事務支持。 – KeithS 2011-05-12 19:42:02
我的意思是SQL Server的版本,是基於框架的事務還是基於數據庫? (數據庫是否支持它)。 – 2011-05-12 19:46:06