ParentTable table1 と child-table table2 があり、両方が (適切な順序で) 作成されるか、作成されないかを確認したい場合、これは正しい構文ですか?
begin
insert into table1 values (seq.nextvalue, 'test') ;
insert into table2 values (seq.currvalue, 'test3');
commit;
end;
シーケンスの割り当てで異なる値が心配な場合は、挿入する前に変数にフェッチしてください。例外が発生した場合は挿入をロールバックし、そうでない場合はコミットします。
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;
それが役に立てば幸い...
テストされていませんが、そのようでなければなりません
begin
insert into table1 values(seq.nextval, 'test') ;
insert into table2 values(seq.currval, 'test3');
commit;
end;