2017-06-15 79 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

还有其他情况应该发生。你说得对。除了这两个地方都有薪水记录的糟糕设计外。有些东西关闭了。 –