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