数据库语句中触发器的old和new给出两个例子
时间: 2024-04-14 07:30:32 浏览: 12
当触发器用于更新操作时,可以使用`OLD`和`NEW`关键字来引用旧值和新值。下面是两个示例:
1. 在更新操作触发器中使用`OLD`和`NEW`关键字:
```sql
CREATE TRIGGER update_salary_trigger
AFTER UPDATE ON employees
FOR EACH ROW
BEGIN
IF NEW.salary > OLD.salary THEN
INSERT INTO salary_changes(employee_id, old_salary, new_salary)
VALUES (NEW.id, OLD.salary, NEW.salary);
END IF;
END;
```
这个触发器在每次更新 `employees` 表时被触发。它通过比较新的工资和旧的工资来确定是否有工资变化,并将变化记录插入到 `salary_changes` 表中。
2. 在删除操作触发器中使用`OLD`关键字:
```sql
CREATE TRIGGER delete_log_trigger
BEFORE DELETE ON logs
FOR EACH ROW
BEGIN
INSERT INTO deleted_logs(log_id, log_message)
VALUES (OLD.id, OLD.message);
END;
```
这个触发器在每次从 `logs` 表中删除行之前被触发。它将被删除的日志记录插入到 `deleted_logs` 表中,以便进行备份或记录目的。
这些例子展示了如何在触发器定义中使用`OLD`和`NEW`关键字来引用旧值和新值,以便在触发器逻辑中进行操作和判断。