【发布时间】:2016-04-22 21:50:58
【问题描述】:
我想将INSERT 两个表中的ID 转换成一个链接表来解决多对多关系。
在不从两个表中创建复杂的JOIN 的情况下,最快、最有效的INSERT 方法是什么?我需要它只在它不会创建重复项时才插入。
我读到MERGE 可能有效,但看起来您只能使用 1 个源表。
我有两个通过链接表连接的表。架构如下:
CREATE TABLE table1
(id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
field1 VARCHAR(40))
CREATE TABLE table2
(id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
field1 VARCHAR(100),
field2 INT,
field3 VARCHAR(40))
CREATE TABLE linkTable
(id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
field1 INT REFERENCES table1(id),
field2 INT REFERENCES table2(id))
我在 table1.field1 和 table2.field1 上有一个索引。
【问题讨论】:
-
如果您在链接表上放置唯一索引,它将拒绝重复项,但您可以捕获并丢弃异常。
-
嗨@Bryan。我尝试了这种方法,但是在执行批量插入时,如果引发任何异常,它会忘记要插入的其余记录。
标签: java sql database insert derby