1

我有一个在存储过程中使用的序列,它更新多个表,如下所示:

create procedure()
   -- retrieve new sequence number
   sequence.nextval();

   -- update table_A using newly created sequence number
   insert into table_A(theID) values(sequence.currval());

   -- update table_B using newly created sequence number
   insert into table_B(theID) values(sequence.currval());
end procedure;

请问上面的代码是否是线程安全的实现?对于每一个过程的执行,我能否保证table_A和table_B中的ID在一次有多个执行时总是检索到相同的序列号?

4

1 回答 1

1

Informix 的主要目标之一是确保该过程完全按照您的需要运行,无论有多少用户同时运行相同的过程。实际上,您可以拥有多个自己的并发会话,每个会话都在运行该过程,并且每个会话都与所有其他会话隔离。

因此,显示的代码是“线程安全的”。

于 2012-04-25T14:15:52.067 回答