2017-06-15 17 views
1

Visual Studio 2010でSQLトリガに問題があります。2つのテーブルがあり、別のテーブルで1つのテーブルを操作したいと考えています。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

エラーは

です10

「マルチパート識別子 『NewSalary.IDは

を』バインドすることができませんでした」私は、「内部結合」がないと仮定しかし、私はそれを

+0

結合は必要ですが、 "hidden" * inserted *テーブルを使用する必要があります。このテーブルには、employeesテーブルに移動する新しいレコードのレコードIDが入ります。 –

答えて

0

てみてくださいを使用する方法がわかりませんON EmployeesON NewSalaryに変更してください。

NewSalaryテーブルが参照されていないため、NewSalary.IDが見つかりません。

私は通常

古いロジックを比較するために、それらを話しSQLに問題抱えている:すべての従業員への更新、更新の従業員と設定給与= 0 NewSalary.ID = employees.ID後
を。

新規:
NewSalaryを更新するたびに、従業員を更新し、給与= 0(NewSalary.ID = employees.ID)を設定します。

違いをご確認ください。

+0

employeesは、参加する必要があるテーブルではなく、トリガーがオンになっているテーブルです。少なくともそれは私がその質問をどのように読むのかです。 –

+0

質問者が**トリガーを働かせる方法に注意してください。最初のアクションはNewSalaryテーブルにあります。 NewSalaryテーブルの更新の結果として、Employeesテーブルに何か他のものが発生するはずです – mattbuell

+0

あなたは正しいです。それは、両方の場所で給料を記録するのが貧弱な設計を除いて。何かがオフです。 –

関連する問題