mysql - 根据先前插入的值插入查询

标签 mysql node.js

我在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/

相关文章:

mysql 在 20 个正确的 timediff 中给出一个错误

mysql - 将值从一个字段拆分为两个

node.js - 上传图片 - Nodejs Paperclip 和 S3

node.js - 为什么我得到 "cannot find module"我已经尝试了一切

php - 基于对象的父=>子关系构建访问矩阵?

mysql - SQL中的AND语句总是被执行吗?

node.js - Angular 5 反复出现问题 - Webpack 无法编译简单项目

node.js - 在多个地方需要模块并创建对象

Mysql 子字符串使用 instr()

node.js - 比较 Node js(vs-code)中的字符串属性的非常奇怪的行为