如果有一个父表表1和子表表2,我想确保要么两者都被创建(以正确的顺序!)要么不被创建,这是正确的语法吗?
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;