SQL触发器多部分标识符错误

时间:2017-01-03 17:18:11

标签: sql sql-server

我正在制造一个触发器,如果​​他们有任何租金或销售额,将使员工的薪水更大......

CREATE TRIGGER tr_EmployeesSalaryCurrentSalary
ON EmployeesSalary
AFTER INSERT
AS
BEGIN
UPDATE EmployeesSalary
SET CurrentSalary=CurrentSalary+((MonthlySalesMade+MonthlyRentsMade)*200)
WHERE EmployeeID =inserted.EmployeeID;
END

但是我收到了一个奇怪的错误

无法绑定多部分标识符“inserted.EmployeeID”。

我的错误是什么?

2 个答案:

答案 0 :(得分:1)

您需要参考inserted"视图"在FROM子句中,您可以使用它。一种方法只使用IN

CREATE TRIGGER tr_EmployeesSalaryCurrentSalary ON EmployeesSalary
AFTER INSERT
AS
BEGIN
    UPDATE EmployeesSalary
        SET CurrentSalary = CurrentSalary + ((MonthlySalesMade + MonthlyRentsMade) * 200)
    WHERE EmployeeID IN (SELECT i.EmployeeID FROM inserted i);
END;

答案 1 :(得分:0)

您必须先设置NOCOUNT并在FROM:

中使用Inserted
CREATE TRIGGER tr_EmployeesSalaryCurrentSalary
ON EmployeesSalary
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON -- new code
UPDATE EmployeesSalary
SET CurrentSalary=CurrentSalary+((MonthlySalesMade+MonthlyRentsMade)*200)
WHERE EmployeeID IN (Select inserted.EmployeeID from inserted);
END

听起来好像你可能没有允许嵌套触发器:

EXEC sp_configure 'show advanced options', 1;  
GO  
RECONFIGURE ;  
GO  
EXEC sp_configure 'nested triggers', 1 ;  
GO  
RECONFIGURE;  
GO