在MySQL中,触发器是一种自动执行的存储程序,它会在指定的事件(如INSERT、UPDATE或DELETE)发生时自动执行。以下是如何创建触发器以便在添加或删除记录时更新表的步骤。
优势:
类型:
应用场景:
假设我们有两个表:orders
和 order_history
。我们希望在向 orders
表添加新订单或删除现有订单时,自动更新 order_history
表。
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
order_date DATETIME
);
CREATE TABLE order_history (
history_id INT AUTO_INCREMENT PRIMARY KEY,
order_id INT,
action VARCHAR(10),
action_date DATETIME
);
1. 在插入新订单时更新 order_history
:
DELIMITER //
CREATE TRIGGER after_order_insert
AFTER INSERT ON orders
FOR EACH ROW
BEGIN
INSERT INTO order_history (order_id, action, action_date)
VALUES (NEW.order_id, 'INSERT', NOW());
END //
DELIMITER ;
2. 在删除订单时更新 order_history
:
DELIMITER //
CREATE TRIGGER after_order_delete
AFTER DELETE ON orders
FOR EACH ROW
BEGIN
INSERT INTO order_history (order_id, action, action_date)
VALUES (OLD.order_id, 'DELETE', NOW());
END //
DELIMITER ;
orders
表的 INSERT
事件之后执行。order_id
。问题1:触发器未执行
SHOW TRIGGERS
查看触发器是否正确创建。问题2:触发器执行效率低
通过上述步骤和示例代码,您可以在MySQL中创建触发器,以便在添加或删除记录时自动更新相关表。
领取专属 10元无门槛券
手把手带您无忧上云