0

parent 的主键从序列 customerNo = customerSeq.nextval 中获取其值。如何将该值作为外键插入到子表中?

插入账户值(accountSeq.nextval,'500',customerSeq.nextval,'S','O');

不起作用并给我错误。

4

2 回答 2

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

于 2013-05-02T07:18:51.713 回答
0

当您将记录插入到具有序列的表中时,您使用“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',
     ...)
于 2013-05-02T07:51:04.923 回答