MySQL触发器两张表同时插入数据的例子
时间: 2023-08-28 22:05:08 浏览: 161
测试插入前和插入后NEW表中的值-MYSQL触发器操操作
假设你有两张表:`users`和`orders`。现在你需要在向`users`表插入数据时,同时向`orders`表中插入一条数据。你可以使用MySQL触发器来实现这个功能。
首先,创建`users`表和`orders`表:
```mysql
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL
);
CREATE TABLE orders (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
order_date DATE NOT NULL,
amount DECIMAL(10, 2) NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id)
);
```
然后,创建一个触发器,当往`users`表中插入数据时,同时向`orders`表中插入一条数据。
```mysql
DELIMITER //
CREATE TRIGGER add_order AFTER INSERT ON users
FOR EACH ROW
BEGIN
INSERT INTO orders (user_id, order_date, amount)
VALUES (NEW.id, CURDATE(), 0.00);
END//
DELIMITER ;
```
现在,向`users`表中插入一条数据:
```mysql
INSERT INTO users (name, email) VALUES ('John', 'john@example.com');
```
这将会自动触发`add_order`触发器,插入一条数据到`orders`表中,其中`user_id`为新插入的用户的ID,`order_date`为当前日期,`amount`为0.00。
你可以通过查询`orders`表验证是否成功插入了一条数据:
```mysql
SELECT * FROM orders;
```
输出如下:
```
+----+---------+------------+--------+
| id | user_id | order_date | amount |
+----+---------+------------+--------+
| 1 | 1 | 2021-11-16 | 0.00 |
+----+---------+------------+--------+
```
阅读全文