MySQL所支持的触发器insert触发器、delete触发器、update触发器,举例
时间: 2024-12-13 12:13:14 浏览: 4
MySQL触发器 Update触发Insert失败
MySQL数据库的触发器是一种特殊的存储过程,它们会在特定的数据操作(如INSERT、DELETE或UPDATE)发生时自动执行。以下是三种主要类型的MySQL触发器及其简要说明:
1. **INSERT触发器**:当一条新的记录插入到表中时,会触发此类型触发器。例如,你可以创建一个INSERT触发器,在新用户注册时自动将其添加到审计日志表中。
```sql
CREATE TRIGGER insert_user_log
AFTER INSERT ON users
FOR EACH ROW
BEGIN
INSERT INTO user_logs (username, registration_date) VALUES (NEW.username, NOW());
END;
```
2. **DELETE触发器**:当删除表中的某条记录时,它会被激活。比如防止删除某个不允许为空的数据项。
```sql
CREATE TRIGGER prevent_delete_zero_balance
BEFORE DELETE ON transactions
FOR EACH ROW
BEGIN
IF NEW.balance = 0 THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Cannot delete a transaction with zero balance';
END IF;
END;
```
3. **UPDATE触发器**:当表中的记录被更新时,此触发器可以检查旧值和新值并执行相应的操作。例如,更新订单状态后发送通知给相关人员。
```sql
CREATE TRIGGER update_order_status_email
AFTER UPDATE OF status ON orders
FOR EACH ROW
WHEN OLD.status != NEW.status
BEGIN
IF NEW.status = 'shipped' THEN
INSERT INTO notification_queue (customer_id, message) VALUES (OLD.customer_id, 'Your order has been shipped.');
END IF;
END;
```
阅读全文