我有以下触发器:
CREATE TRIGGER SalaryCannotDecrease ON Employees
AFTER UPDATE
AS
IF EXISTS (
SELECT *
FROM inserted, deleted
WHERE inserted.Salary < deleted.Salary
)
BEGIN
RAISERROR 30002 'You cannot decrease salary';
ROLLBACK TRANSACTION;
RETURN
END;
Run Code Online (Sandbox Code Playgroud)
当我尝试执行以下操作时,此触发器正在触发:
UPDATE Employees
SET Salary = Salary * 1.05
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?
加入Employees
表的唯一ID与插入扳机。
--- Employees table
CREATE TABLE Employees
( EmpID INT, --- unique id for employee
Salary INT
)
--- Dummy data insertion
INSERT INTO Employees
SELECT 11001,5000
UNION ALL
SELECT 10003,6500
UNION ALL
SELECT 10004,6900
UNION
SELECT 10006,300
-- Salary Trigger
CREATE TRIGGER SalaryCannotDecrease ON Employees
AFTER UPDATE
AS
IF EXISTS (
SELECT *
FROM inserted INNER JOIN deleted ON inserted.empid=deleted.empid
WHERE inserted.Salary < deleted.Salary
)
BEGIN
RAISERROR 30002 'You cannot decrease salary';
ROLLBACK TRANSACTION;
RETURN
END;
-- Update Statement
UPDATE Employees
SET Salary = Salary * 1.05
WHERE empid=10006
--- Verification
SELECT * FROM Employees
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
159 次 |
最近记录: |