MYSQl触发器高级用法示例
时间: 2024-10-18 19:22:24 浏览: 25
MySQL触发器简单用法示例
5星 · 资源好评率100%
MySQL触发器是一种特殊的存储过程,它会在特定的数据更改事件(如INSERT、UPDATE、DELETE操作)发生时自动执行。触发器可以用于维护数据一致性,执行业务规则,或者记录审计信息等。下面是一些高级用法示例:
1. **基于条件的触发器**:
```sql
CREATE TRIGGER after_insert_employee
AFTER INSERT ON employees
FOR EACH ROW
BEGIN
IF NEW.salary < 5000 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '新员工工资不得低于5000';
END IF;
END;
```
这个触发器在插入员工记录时,如果工资小于5000元,会抛出错误。
2. **级联更新的触发器**:
```sql
CREATE TRIGGER update_customer_orders
AFTER UPDATE ON customers
WHEN OLD.customer_id IN (SELECT customer_id FROM orders)
FOR EACH ROW
BEGIN
UPDATE orders
SET status = 'updated'
WHERE customer_id = NEW.customer_id;
END;
```
当客户信息发生变化时,所有该客户的订单状态会被标记为已更新。
3. **复合触发器**:
```sql
CREATE TRIGGER audit_log_trigger
BEFORE INSERT OR UPDATE ON users
FOR EACH ROW
BEGIN
DECLARE log_message VARCHAR(255);
SET log_message = CONCAT('User ', NEW.username, ' performed a ', IF(NEW.action = 'insert', 'insertion', 'update'), ' on ', TABLE_NAME());
INSERT INTO audit_log (log_message) VALUES (log_message);
END;
```
这个触发器在用户表的INSERT和UPDATE操作前,都会记录一条审计日志。
阅读全文