2017-06-15 77 views
1

我在Visual Studio 2010中遇到了SQL觸發器的問題。我有2個表格,我想用另一個表格進行操作。在Visual Studio 2010中更新觸發器

下面的代碼:

ALTER TRIGGER update_costs 
ON employees 
AFTER UPDATE 
AS 
BEGIN 
    UPDATE employees 
    SET salary = 0 
    WHERE NewSalary.ID=employees.ID 
    PRINT 'Salary is now set on 0' 

END 

我喜歡這樣的工作:

  • 我在員工表上0
  • 工資設定薪水NewSalary表改變到0

我得到的錯誤是

「多部分標識符‘NewSalary.ID’無法綁定」

我認爲不存在「內部連接」,但我不知道如何使用它

+0

你是正確的,你需要一個連接,但你也需要使用「hidden」* inserted *表,它將包含進入employees表的新記錄的記錄ID。 –

回答

0

嘗試將ON Employees更改爲ON NewSalary

由於未引用NewSalary表,因此無法找到NewSalary.ID。

當我在使用SQL問題,我通常講出來比較邏輯

老:
每次更新的員工,員工更新並設置工資= 0,其中NewSalary.ID = employees.ID後。

新:
每次更新到NewSalary後,更新員工並設置salary = 0,其中NewSalary.ID = employees.ID。

看到區別?

+0

員工是觸發器所在的表格,而不是需要連接的表格。至少我是這樣讀的。 –

+0

請注意提問者希望觸發器工作。最初的行動在NewSalary表上。至於NewSalary表上的更新結果 - Employees表 – mattbuell

+0

還有其他情況應該發生。你說得對。除了這兩個地方都有薪水記錄的糟糕設計外。有些東西關閉了。 –