Безумный вопрос. Я знаю. Вот сценарий:
Мой клиент имеет несколько веб-сайтов 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 />
Но я беспокоюсь о двух пользователях, одновременно попадающих в таблицу, и оба получают один и тот же "новый" идентификатор.
Есть мысли?