【问题标题】:How to insert a row to two tables sharing the same primary key at once?如何一次向共享相同主键的两个表中插入一行?
【发布时间】:2026-01-18 16:05:01
【问题描述】:

假设有以下表结构:

table1:
id - LONG primary key
data1 - INT

table2:
id - LONG primary key (constraint references table1.id)
data1 - INT
data2 - INT
data3 - INT

表1不依赖表2,但如果表2中有条目,则必须引用表1中的行。

目前,通过我的Java后端,要向表中插入一个新行,我INSERTtable1,获取生成的键,然后使用我刚刚插入的行中生成的id作为主我插入到table2 的行的键。这个过程需要一段时间,尤其是当桌子变得很大时。

如何在一个查询中向两个表中插入行,而不必等待插入到 table1 的查询结果,同时仍确保添加到 table2 的行具有相同的主键作为我要添加到table的行?

【问题讨论】:

  • SQL 中无法同时插入两个表。插入表格的时间不应取决于表格的大小。

标签: mysql sql


【解决方案1】:

您不能同时插入两个表。使用LAST_INSERT_ID()函数获取插入表2时为表1生成的ID

INSERT INTO table1 (data1) VALUES (123);
INSERT INTO table2 (id, data1, data2, data2) VALUES (LAST_INSERT_ID(), 111, 222, 333);

如果您使用 API 函数来获取生成的 ID,这可以避免额外的查询。

【讨论】:

    最近更新 更多