2010-05-21 32 views
0

我有兩個表,客戶和CustomerPhone。在客戶更新一次爲多個表 - SQL服務器/ T-SQL

單個記錄可以有多個CustomerPhone記錄。如您在下面的圖片中看到的,電話和傳真駐留在CustomerPhone表中,而其餘字段駐留在Customer表中。如果用戶想要編輯客戶記錄,顯然我必須更新Customer表中的記錄,並且至少要記錄CustomerPhone(電話和傳真)中的兩條記錄。

http://img714.imageshack.us/img714/9417/snapshotapp.jpg http://img714.imageshack.us/img714/9417/snapshotapp.jpg

我可以寫兩個更新語句,一個更新customerPhone和第二次更新客戶表。有更好的解決方案嗎?

回答

4

在這樣的情況下,風險是一個更新成功,但其他某種原因失敗(網線被拔掉,電源故障,等等)這會使數據庫中的不正確的數據。

您可以通過兩種方式解決這個。

  1. 執行2次單獨的更新,但 將它們括在單個事務
  2. 實施客戶更新 存儲過程會同時更新 表給你,在任何一個 隱性或顯性事務。

SQL沒有辦法在單個語句中更新多個表,但是您當然可以在同一個命令中使用多個語句。

上面的第二個選項可能是你有問題,你可以有一個顧客衆多的電話號碼,這將是限制,所以我建議運行單獨的更新,但這樣做在一個事務。