使用触发器实现数据完整性 - 两个业务规则示例

触发器是数据库中一种重要的机制,可以用来在特定事件发生时自动执行某些操作,从而实现数据完整性等功能。本文将通过两个业务规则示例,演示如何使用 MySQL 触发器来确保数据完整性。

业务规则例子1: 在订单表中,订单状态为'已完成' (status=2) 时,不能再次修改订单信息。

使用 AFTER 类触发器实现:

CREATE TRIGGER trg_order_status AFTER UPDATE ON order_table
FOR EACH ROW
BEGIN
  IF NEW.status = 2 AND OLD.status <> 2 THEN
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Order status cannot be changed after completion.';
  END IF;
END;

业务规则例子2: 在产品表中,产品价格不能低于成本价。

使用 BEFORE 类触发器实现:

CREATE TRIGGER trg_product_price BEFORE UPDATE ON product_table
FOR EACH ROW
BEGIN
  IF NEW.price < NEW.cost_price THEN
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Product price cannot be lower than cost price.';
  END IF;
END;

总结: 通过这两个示例,我们可以看到触发器在维护数据完整性方面发挥着重要作用。根据不同的业务规则,可以选择合适的触发器类型 (AFTER 或 BEFORE) 来实现预期的数据校验逻辑。

使用触发器实现数据完整性 - 两个业务规则示例

原文地址: https://www.cveoy.top/t/topic/ocWf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录