我们有一个数据库,其中包含一个表,用于显示所有员工信息(名称,付款等)。表中的一列是“佣金”。我正在尝试编写一个触发器,只允许更新或插入“佣金”列,如果它是销售代表。如果对任何其他员工进行了更新,则应该打印出错误。我希望此触发器还将每次更新的所有信息(无论是否失败)打印到单独的表中。我这样做的最佳方式是什么?
我对SQL Server相对较新,所以非常感谢这里的任何帮助!
谢谢,
编辑: 以下是我到目前为止的情况:
CREATE TRIGGER CommissionUpdate ON Employees
FOR UPDATE
AS IF UPDATE(Commission)
Declare
@Old_Comm money
, @New_Comm money
, @EmpID int
Select @EmpID = (Select EmployeeID From Deleted)
Select @Old_Comm = (Select Commission From Deleted)
Select @New_Comm = (Select Commission From Inserted)
BEGIN
INSERT INTO ChangeLog (EmpID, [User], [Date], OldComm, NewComm)
VALUES (@EmpID, User_Name(), GetDate(), @Old_Comm, @New_Comm)
END
基本上所有这些都是在更新佣金表时向ChangeLog表添加条目。我仍然无法添加约束,只允许为销售代表更新“佣金”。