2012-08-17 121 views
1

我需要更新存儲在兩個表中的一些信息。要更新其中一個表格,必須完成與另一個表格的連接。我想知道,如果我可以用一個單一的查詢更新。一些帖子建議使用觸發器。我希望有另一種方式,因爲我將不得不在C#中完成。此外,我看到別的帖子說這是可能使用這樣的事情:使用SQL Server中的單個查詢更新兩個表

update pd, pr 
set pd.Name = 'Test', 
pr.Date = '2012-07-31', 
from prDetail pd 
left join pr on pd.ID = pr.ID 
where pd.Code = '45007' 
and pr = '2019' 
and pr.Item = '1' 

這不是爲我工作(它顯示這個錯誤:Incorrect syntax near ',')。這可以通過某種方式實現嗎?

+0

您可以編寫存儲過程。 – 2012-08-17 12:03:28

+4

另外(即使更新可能會影響多個表,但它不能),您的左連接實際上不是左連接。您在右表中有一個針對列的where子句,這有效地使這是一個正確的連接。無論如何,你需要兩條語句來完成這個任務,但是我建議一些關於內連接和外連接如何工作的研究...... – 2012-08-17 12:05:21

回答

6

編號

您一次只能更新一張表。

將您的更新分成兩個更新查詢,並在必要時將它們包裝在一個事務中。

0

是的,因爲@podiluska說你一次只能更新一張表。您也可以使用事務來執行兩個查詢與單個事務。

否則, 如果您的表/關係具有依賴關係(外鍵和主鍵)關係,則可以使用cascade選項。

否則,

您可以使用Trigger

0

不,一次不能更新兩個,但可以考慮將其包裝在存儲過程中,然後調用它。如果可能的話,你應該儘量避免觸發這樣的事情。