如果有一个ParentTable table1和child-table table2,我想确保两者都创建(按正确顺序!)或者没有创建,这是正确的语法吗?
begin
insert into table1 values (seq.nextvalue, 'test') ;
insert into table2 values (seq.currvalue, 'test3');
commit;
end;
答案 0 :(得分: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;
希望它有所帮助...
答案 1 :(得分:0)
未经测试但必须像那样
begin
insert into table1 values(seq.nextval, 'test') ;
insert into table2 values(seq.currval, 'test3');
commit;
end;