2013-05-02 3 views
0

상위의 기본 키는 customerNo = customerSeq.nextval 시퀀스에서 해당 값을가집니다. 그 값을 자식 테이블에 외래 키로 삽입하려면 어떻게해야합니까?Oracle 기본 키 참조

계정 값 (accountSeq.nextval, '500', customerSeq.nextval, 'S', 'O')에 삽입;

작동하지 않으며 오류가 있습니다.

답변

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

0

당신이 순서가있는 테이블에 레코드를 삽입 할 때, 당신은 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', 
    ...)