创建触发器以仅允许某些员工的更新

时间:2015-03-15 14:50:48

标签: sql-server triggers

我们有一个数据库,其中包含一个表,用于显示所有员工信息(名称,付款等)。表中的一列是“佣金”。我正在尝试编写一个触发器,只允许更新或插入“佣金”列,如果它是销售代表。如果对任何其他员工进行了更新,则应该打印出错误。我希望此触发器还将每次更新的所有信息(无论是否失败)打印到单独的表中。我这样做的最佳方式是什么?

我对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表添加条目。我仍然无法添加约束,只允许为销售代表更新“佣金”。

0 个答案:

没有答案