0

ParentTable table1 と child-table table2 があり、両方が (適切な順序で) 作成されるか、作成されないかを確認したい場合、これは正しい構文ですか?

begin    
  insert into table1 values (seq.nextvalue, 'test') ;
  insert into table2 values (seq.currvalue, 'test3');
  commit;
end;
4

2 に答える 2

1

シーケンスの割り当てで異なる値が心配な場合は、挿入する前に変数にフェッチしてください。例外が発生した場合は挿入をロールバックし、そうでない場合はコミットします。

DECLARE
   v_seq_id NUMBER;
BEGIN
   SELECT seq.nextval
     INTO v_seq_id
     FROM dual;
   --
   INSERT INTO table1
   VALUES (
      v_seq_id,
      'test'
   );
   --
   INSERT INTO table2
   VALUES (
      v_seq_id,
      'test3'
   );
   --
   COMMIT;
EXCEPTION
   WHEN others
   THEN
      <log_error>
      ROLLBACK;
END;

それが役に立てば幸い...

于 2012-04-26T10:53:04.173 に答える
0

テストされていませんが、そのようでなければなりません

begin    
  insert into table1 values(seq.nextval, 'test') ;
  insert into table2 values(seq.currval, 'test3');
  commit;
end;
于 2012-04-26T10:41:36.260 に答える