使用触发器实现数据完整性 - 两个业务规则示例
使用触发器实现数据完整性 - 两个业务规则示例
触发器是数据库中一种重要的机制,可以用来在特定事件发生时自动执行某些操作,从而实现数据完整性等功能。本文将通过两个业务规则示例,演示如何使用 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 著作权归作者所有。请勿转载和采集!