我想在两个表中使用相同的序列生成值将显式数据批量插入由外键链接的两个不同表中。
我正在尝试使用 INSERT ALL 指令和由连续 UNION ALL 语句组成的 WITH 子句来实现这一点。
只要 with 子句返回不超过 256 行,一切正常。一旦我添加另一个 UNION ALL 条目,我就会收到以下错误:
ORA-02291: 违反完整性约束 (MY_SCHEMA.FK_TABLE_B_TO_TABLE_A) - 找不到父键 *原因:外键值没有匹配的主键值。*操作:删除外键或添加匹配的主键。
如果我禁用外键约束,那么一切正常(即使超过 256 行)。
我的指令如下所示:
insert all
into MY_SCHEMA.TABLE_A (ID, COLUMN_1, COLUMN_2)
values (MY_SCHEMA.MY_SEQUENCE.nextval, COLUMN_1, COLUMN_2)
into MY_SCHEMA.TABLE_B (ID, COLUMN_3)
values (MY_SCHEMA.MY_SEQUENCE.nextval, COLUMN_3)
with input_data as (
select 11 COLUMN_1, 12 COLUMN_2, 13 COLUMN_3
UNION ALL
select 21 COLUMN_1, 22 COLUMN_2, 23 COLUMN_3
UNION ALL
...
UNION ALL
select 31 COLUMN_1, 32 COLUMN_2, 33 COLUMN_3
)
select * from input_data;
这种指令可以处理的数据量是否有一些限制?还是我错过了其他东西?
我正在使用 Oracle 11g 和 SQLDeveloper。