MySQL 触发器insert
时间: 2023-05-31 09:01:30 浏览: 205
在 MySQL 中,触发器是与特定表相关联的一种特殊类型的存储过程,它在特定事件(例如插入、更新或删除)发生时自动执行。
下面是一个 MySQL 触发器示例,它会在向表中插入新记录时自动执行,并将插入的数据记录到另一个表中。
首先,创建一个名为 "orders" 的表:
CREATE TABLE orders (
order_id INT PRIMARY KEY AUTO_INCREMENT,
customer_id INT NOT NULL,
amount DECIMAL(10,2) NOT NULL,
order_date DATE NOT NULL
);
接下来,创建一个名为 "orders_log" 的表,用于记录插入的数据:
CREATE TABLE orders_log (
log_id INT PRIMARY KEY AUTO_INCREMENT,
order_id INT NOT NULL,
customer_id INT NOT NULL,
amount DECIMAL(10,2) NOT NULL,
order_date DATE NOT NULL,
log_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
然后,创建一个名为 "orders_insert_trigger" 的触发器,它将在向 "orders" 表中插入新记录时自动执行:
DELIMITER //
CREATE TRIGGER orders_insert_trigger
AFTER INSERT ON orders
FOR EACH ROW
BEGIN
INSERT INTO orders_log (order_id, customer_id, amount, order_date)
VALUES (NEW.order_id, NEW.customer_id, NEW.amount, NEW.order_date);
END//
DELIMITER ;
现在,每次向 "orders" 表中插入新记录时,都会自动执行 "orders_insert_trigger" 触发器,将插入的数据记录到 "orders_log" 表中。
例如,执行以下 SQL 语句:
INSERT INTO orders (customer_id, amount, order_date)
VALUES (1, 100.00, '2021-01-01');
此时,将向 "orders" 表中插入一条新记录,并自动执行 "orders_insert_trigger" 触发器,将插入的数据记录到 "orders_log" 表中。执行以下 SQL 语句,可以查看 "orders_log" 表中的记录:
SELECT * FROM orders_log;
结果应该类似于:
+--------+----------+-------------+--------+------------+---------------------+
| log_id | order_id | customer_id | amount | order_date | log_date |
+--------+----------+-------------+--------+------------+---------------------+
| 1 | 1 | 1 | 100.00 | 2021-01-01 | 2021-01-01 00:00:00 |
+--------+----------+-------------+--------+------------+---------------------+
阅读全文