我在node.js(MySQL模块)中使用MySQL来管理我的数据库。我有两个与一个主表相关的表,如下所示:
表 1(主表):航类
+-----+-------------+-----------------+
| Id | CreatedDate | Notes |
+-----+-------------+-----------------+
| 1 | 2015-01-01 | No reservations |
| 2 | 2015-02-15 | Without places |
| ... | ... | ... |
+-----+-------------+-----------------+
表 2:航类乘客
+----------+------------+--------+
| IdFlight | Passenger | Arrive |
+----------+------------+--------+
| 1 | 125 | true |
| 2 | 115 | false |
| ... | ... | ... |
+----------+------------+--------+
表 3:PassangerParameters
+----------+-------------+-------+
| IdFlight | Parameter | Value |
+----------+-------------+-------+
| 1 | Age | 12 |
| 2 | Civil status| S |
| 2 | Age | 25 |
| 4 | Civil status| M |
| 4 | Age | 40 |
| ... | ... | ... |
+----------+-------------+-------+
现在,当我想添加航类时,我必须首先进行 INSERT INTO Flights SET ?
MySQL 查询,然后获取Flight Id
来完成此操作其他查询:
INSERT INTO FlightPassengers VALUES (?,?,?)
INSERT INTO PassangerParameters VALUES (?, ?, ?), (?, ?, ?)
将值插入其他表中。这种方式我感觉非常低效和不舒服,特别是对于PassangerParameters
表。
如何使该查询更高效?我可以采取一种方法来正确地做到这一点吗?
最佳答案
您可以使用TRIGGER当您插入 Flights
CREATE TRIGGER insertPassInfo
AFTER INSERT ON Flights
FOR EACH ROW
BEGIN
INSERT INTO FlightPassengers VALUES (NEW.Id, ?, ?);
INSERT INTO PassengerParameters VALUES (NEW.Id, ?, ?), (NEW.Id, ?, ?);
END
关于mysql - 根据先前插入的值插入查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32404662/