我在存储过程中使用了一个更新多个表的序列,如下所示:
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总是在一次执行多个执行时检索相同的序列号吗?
答案 0 :(得分:1)
Informix的主要目标之一是确保程序完全按照您的需要运行,无论有多少用户同时运行相同的过程。实际上,您可以在运行该过程时拥有自己的多个并发会话,并且每个会话都与所有其他会话隔离。
因此,显示的代码是“线程安全的”。