MySQL——触发器·

.MySQL的触发器(Trigger)是在数据库中定义的一种特殊类型的存储过程,它会在指定的数据库事件发生时自动执行。触发器可以用于实现数据的自动更新、完整性约束、日志记录等功能。

CREATE TRIGGER trigger_name
{BEFORE | AFTER} {INSERT | UPDATE | DELETE} ON table_name
FOR EACH ROW
trigger_body

 其中,trigger_name是触发器的名称,table_name是触发器所关联的表名,{BEFORE | AFTER}表示触发器执行的时机,可以是在数据库事件之前或之后执行,{INSERT | UPDATE | DELETE} 表示触发器响应的数据库事件类型,可以是插入、更新或删除操作,FOR EACH ROW表示对每一行记录都要执行触发器,trigger_body是触发器的执行体,可以包括SQL语句和存储过程等。

在一个在线商城的数据库中使用触发器来实现库存管理和销售统计

假设有一个名为`products`的表,其中包含了产品的信息,包括产品ID、名称、价格和库存数量等字段。还有一个名为`sales`的表,记录了每次销售的信息,包括销售ID、销售日期、产品ID和销售数量等字段。

CREATE TABLE products (
  product_id INT PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  price DECIMAL(10,2) NOT NULL,
  stock_quantity INT NOT NULL
);

CREATE TABLE sales (
  sale_id INT PRIMARY KEY,
  sale_date DATE NOT NULL,
  product_id INT NOT NULL,
  quantity INT NOT NULL,
  FOREIGN KEY (product_id) REFERENCES products (product_id)
);

我们可以创建两个触发器来管理库存和更新销售统计:

1. 触发器一:在`sales`表插入记录时,减少对应产品的库存数量。

CREATE TRIGGER update_inventory AFTER INSERT ON sales
FOR EACH ROW
BEGIN
    UPDATE products
    SET stock = stock - NEW.quantity
    WHERE product_id = NEW.product_id;
END;

以上触发器会在每次向`sales`表插入记录后自动执行,在`products`表中减少对应产品的库存数量。

2. 触发器二:在`sales`表插入记录时,更新产品的销售数量统计。

CREATE TRIGGER update_sales_statistics AFTER INSERT ON sales
FOR EACH ROW
BEGIN
    UPDATE products
    SET sales_count = sales_count + NEW.quantity
    WHERE product_id = NEW.product_id;
END;

以上触发器会在每次向`sales`表插入记录后自动执行,在`products`表中更新对应产品的销售数量统计。

通过上述触发器,当有新的销售记录插入到`sales`表时,库存数量会自动减少,并且对应产品的销售数量统计会自动更新。这样可以确保库存和销售统计的一致性。

SHOW TRIGGERS;
SHOW TRIGGERS LIKE 'table_name';
DROP TRIGGER update_stock_quantity;

 

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sqyaa.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值