将具有外键的第三个表中的记录复制到其他表

Wel*_*Wel 5 sql database firebird

我有三个表:表 1 作为主表,表 2 作为表 1 的详细信息,表 3 作为表 2 的详细信息。

TABLE1
PK1 INTEGER, 
FD1 VARCHAR(100)

TABLE2
PK2 INTEGER,
FK1 INTEGER,
FD2 VARCHAR(100)

TABLE3
PK3 INTEGER,
FK2 INTEGER,
FD3 VARCHAR(100)
Run Code Online (Sandbox Code Playgroud)

PK1、PK2、PK3 分别是 table1、table2 和 table3 的自增主键,而 FK1 是 PK1 的外键,FK2 是 PK2 的外键。

我需要将表 1 中的一条记录及其来自表 2 和表 3 的所有详细记录复制到同一个表中。

我已经使用 Table1 和 Table2 进行了复制Insert Into...Select...Returning,并且我正在考虑复制 Table2 和 Table3 中的记录FOR Select。有更好的解决方案吗?

QAr*_*rea 0

我不认为你真的有自动增量主键。您更有可能使用发电机。如果是这样,那么您可以使用以下方式插入数据:

insert into table1(pk1, fd1)
select gen_id(g_pk1,1), fd1
from table2
Run Code Online (Sandbox Code Playgroud)

如果需要,您可以在选择查询中使用联接表或联合表。

请记住,查询的输出要适合插入语句。