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 回答