我在node.js(MySQL模块)中使用MySQL来管理我的数据库。我有关于一个主表如下两个表:根据先前插入的值插入查询
表1(主表):Flights
+-----+-------------+-----------------+
| Id | CreatedDate | Notes |
+-----+-------------+-----------------+
| 1 | 2015-01-01 | No reservations |
| 2 | 2015-02-15 | Without places |
| ... | ... | ... |
+-----+-------------+-----------------+
表2:FlightPassengers
+----------+------------+--------+
| 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
,使这个人querys:
INSERT INTO FlightPassengers VALUES (?,?,?)
INSERT INTO PassangerParameters VALUES (?, ?, ?), (?, ?, ?)
其他表中插入值。在这种方式下,我觉得是非常低效和不舒服,特别是对于PassangerParameters
表。
如何使此查询更有效?有一种方法可以让我们正确地做到这一点?
你是如何访问数据库?执行插入查询时,大多数API将返回最后一个插入ID。 – jwueller
@jwueller我正在使用mysql模块[链接](https://www.npmjs.com/package/mysql)。我已经得到最后一个插入ID来更新我的其他表,但我想知道是否有一个有效的方法来使用最后一个插入Id – Golinmarq
一个接一个地执行这些查询实际上是执行这些查询的标准方式。您可以使用PL/SQL在数据库引擎中完成所有操作,但仍然需要按顺序执行查询。另外,将逻辑存储在数据库中通常不是一个好主意,所以我肯定会建议在节点中进行。 – jwueller