クレイジーな質問。知っている。シナリオは次のとおりです。
私のクライアントには、同じ iSeries データベースの同じライブラリにアクセスする ColdFusion Web サイトがいくつかあります。仮に、次の SQL クエリをこれらの Web サイトのいずれからでも実行できるとしましょう。
<cfquery datasource="myDS">
INSERT INTO XQX.myTable
(
x_ID,
x_Name,
x_Phone
)
VALUES
(
#myId#,
#Name#,
#Phone#
)
</cfquery>
(CFQUERYPARAMなどがないことはわかっています。簡単にするために、上記のクエリはA-Okであると仮定しましょう)
挿入の前にテーブルをクエリして最大値を取得し、次のようにインクリメントすることで Id を生成できます。
<cfquery name="qMaxId" datasource="myDS">
SELECT MAX(x_Id) AS MaxId
FROM XQX.myTable
</cfquery>
<cfset myId = qMaxId.MaxId + 1 />
しかし、2 人のユーザーが同時にテーブルにアクセスし、両方が同じ「新しい」ID を取得することを心配しています。
何かご意見は?