我正在制造一个触发器,如果他们有任何租金或销售额,将使员工的薪水更大......
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”。
我的错误是什么?
答案 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:
中使用InsertedCREATE 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