parent 的主键从序列 customerNo = customerSeq.nextval 中获取其值。如何将该值作为外键插入到子表中?
插入账户值(accountSeq.nextval,'500',customerSeq.nextval,'S','O');
不起作用并给我错误。
parent 的主键从序列 customerNo = customerSeq.nextval 中获取其值。如何将该值作为外键插入到子表中?
插入账户值(accountSeq.nextval,'500',customerSeq.nextval,'S','O');
不起作用并给我错误。
您可以使用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
当您将记录插入到具有序列的表中时,您使用“returning”子句检索用于 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',
...)