父级的主键从序列customerNo = customerSeq.nextval获取其值。如何将该值作为外键插入子表?
插入帐户值(accountSeq.nextval,'500',customerSeq.nextval,'S','O');
不起作用并给我错误。
答案 0 :(得分:1)
您可以使用currval
获取上次生成的值。
insert into account
(account_id, some_col, customer_id, col3, col4)
values
(accountSeq.nextval,'500',customerSeq.currval,'S','O');
在插入表中明确列出表的列是一种很好的编码风格。您也没有显示您的表定义,但不使用字符串文字来表示数字'500'
是一个字符串,500
是一个数字。
手册中有更多详细信息:http://docs.oracle.com/cd/E11882_01/server.112/e26088/pseudocolumns002.htm#i1009336
答案 1 :(得分:0)
将记录插入带有序列的表时,可以使用“returns”子句检索PL / SQL变量中使用的值,然后将其用于子记录。
insert into
my_table (
id,
col1,
...)
values (
my_table_seq.nextval,
'A',
...)
returning id
into my_package.my_table_id;
insert into
child_table (
id,
my_table_id,
...)
values (
child_table_seq.nextval,
my_package.my_table_id,
'B',
...)