在数据库中使用序列时,如何确保线程安全?

时间:2012-04-24 10:14:18

标签: stored-procedures informix

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

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总是在一次执行多个执行时检索相同的序列号吗?

1 个答案:

答案 0 :(得分:1)

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

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