sql - 将带有外键的第三张表的记录复制到另一张表

标签 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)

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

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

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

最佳答案

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

insert into table1(pk1, fd1)
select gen_id(g_pk1,1), fd1
from table2

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

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

关于sql - 将带有外键的第三张表的记录复制到另一张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14886005/

相关文章:

Android SQLite 显示错误

android - Firebird 和 Android JDBC 驱动程序

sql - ALTER DATABASE 失败,因为无法对数据库加锁

mysql - 对于一组历史记录来说,性能最好的表索引是什么?

SQL Server 使用通用字段元素生成 XML

sql - Firebird 支持 Infinity 作为 FLOAT 值吗?

c# - 首先是 ADO.NET 实体数据模型 - 生成 DB Firebird .NET 提供程序

sql - 为什么 CREATE PROCEDURE 命令中允许使用 DEFAULT 关键字

MySQL:我需要两个以上的OR条件!我怎样才能做到这一点?

sql-server - 如何用随机数据填充我的数据库的所有表?