创建UPDATE触发器,当Salary表中Income值增加500时, outcome值增加50:
时间: 2023-08-16 07:06:41 浏览: 106
以下是创建该触发器的SQL语句:
```
CREATE TRIGGER update_salary_income
AFTER UPDATE ON Salary
FOR EACH ROW
BEGIN
IF NEW.Income = OLD.Income + 500 THEN
UPDATE Salary SET Outcome = Outcome + 50 WHERE EmployeeID = NEW.EmployeeID;
END IF;
END;
```
该触发器会在每次Salary表中的记录被更新后被触发。当Income值增加500时,触发器会将对应的EmployeeID记录的Outcome值增加50。请注意,这个触发器只会在Income值增加500时触发,而不是在任何时候都增加50。
相关问题
sql 语句 创建UPDATE触发器,当Salary表中的InCome值增加500时,OutCome值则增加50。
可以使用以下 SQL 语句创建 UPDATE 触发器:
```
CREATE TRIGGER update_salary
AFTER UPDATE ON Salary
FOR EACH ROW
IF NEW.InCome > OLD.InCome THEN
UPDATE Salary
SET OutCome = OutCome + 50
WHERE employee_id = NEW.employee_id;
END IF;
```
这个触发器会在 Salary 表中 InCome 值发生变化时被触发,然后根据需要增加 OutCome 值。其中,`NEW.InCome` 表示更新后的收入值,`OLD.InCome` 表示更新前的收入值。如果更新后的收入值比更新前的收入值高,则会将该员工的 OutCome 值增加 50。`WHERE employee_id = NEW.employee_id` 表示仅更新该员工的记录。
T-sql 创建触发器t3,当修改employees时,如果将员工表中员工的工作时间增加1年,则salary表中income增加 500,对应的outcome增加50; --增加2年则income增加1000,outcome增加100,以此类推。
好的,以下是创建触发器t3的T-SQL语句:
```
CREATE TRIGGER t3
ON employees
AFTER UPDATE
AS
BEGIN
IF UPDATE(work_time)
BEGIN
DECLARE @addedYears INT
DECLARE @incomeIncrease INT
DECLARE @outcomeIncrease INT
SELECT @addedYears = (INSERTED.work_time - DELETED.work_time) / 365,
@incomeIncrease = (INSERTED.work_time - DELETED.work_time) / 365 * 500,
@outcomeIncrease = (INSERTED.work_time - DELETED.work_time) / 365 * 50
FROM INSERTED
INNER JOIN DELETED ON INSERTED.employee_id = DELETED.employee_id
IF @addedYears > 0
BEGIN
UPDATE salary
SET income = income + @incomeIncrease,
outcome = outcome + @outcomeIncrease
WHERE employee_id = INSERTED.employee_id
END
END
END
```
这个触发器会在修改employees表中的数据时触发,检查是否修改了工作时间(work_time)字段。如果是,则计算出工作时间增加的年数,并根据年数计算出income和outcome需要增加的值。然后,根据employee_id更新salary表中对应的income和outcome字段的值,使其增加相应的值。
需要注意的是,这个触发器只会在修改employees表中的数据时触发,而且只会在work_time字段被修改时才会执行更新操作。如果其他字段被修改,或者没有修改work_time字段,则不会执行更新操作。