疯狂的问题。我知道。这是场景:
我的客户有几个 ColdFusion 网站,它们都访问同一个 iSeries 数据库上的同一个库。假设,为了论证,可以从这些网站中的任何一个运行以下 SQL 查询:
<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 />
但是,我担心两个用户在同一时间敲桌子,并且都得到相同的“新”ID。
有什么想法吗?