创建一个触发器(完整业务流程,至少20行代码)(三个例子)
时间: 2024-11-12 20:34:16 浏览: 11
触发器的建立使用
创建数据库触发器通常是为了自动执行某些操作,例如数据验证、一致性维护或业务规则应用。以下是三个基于SQL的不同场景下的触发器示例:
### 示例一:在INSERT时更新计数器(MySQL)
```sql
DELIMITER //
CREATE TRIGGER increment_counter AFTER INSERT ON sales
FOR EACH ROW
BEGIN
UPDATE product SET total_sold = total_sold + NEW.quantity
WHERE product_id = NEW.product_id;
END; //
DELIMITER ;
```
在这个例子中,每当销售表`sales`中有新记录插入时,会自动增加对应产品`product`的总销量。
### 示例二:在UPDATE时检查金额是否大于零(Oracle)
```sql
CREATE OR REPLACE TRIGGER check_amount
BEFORE UPDATE OF amount ON transactions
FOR EACH ROW
DECLARE
v_old_amount NUMBER;
BEGIN
IF :NEW.amount <= 0 THEN
RAISE_APPLICATION_ERROR(-20001, 'Amount cannot be negative');
END IF;
END;
/
```
这个触发器会在更新交易金额之前检查,如果小于等于零,则抛出错误。
### 示例三:在DELETE时删除关联的订单项(SQL Server)
```sql
CREATE TRIGGER delete_order_item
ON orders
AFTER DELETE AS
BEGIN
DELETE FROM order_items
WHERE order_id IN (SELECT id FROM deleted);
END;
GO
```
当订单表`orders`有记录被删除时,此触发器会删除与之关联的所有订单项目记录。
阅读全文