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 の theID が常に同じシーケンス番号を取得することを保証できますか?

4

1 に答える 1

1

Informixの主な目的の1つは、何千人ものユーザーが同時に同じプロシージャを実行している場合でも、プロシージャが必要なとおりに機能することを確認することです。実際、それぞれがプロシージャを実行し、各セッションが他のすべてのセッションから分離されている、独自の複数の同時セッションを持つことができます。

したがって、示されているコードは「スレッドセーフ」です。

于 2012-04-25T14:15:52.067 に答える