У меня есть функция, которая генерирует токен для следующего события.давайте назовем этот eventID.Это числовое значение, но оно хранится в виде архива по деловым причинам.Эта функция может вызываться из нескольких мест внутри приложения, и во избежание состязаний во избежание генерации одного и того же идентификатора для разных пользователей была добавлена блокировка области приложения.Но все же в некоторых случаях один и тот же идентификатор был сгенерирован для 2 разных событий.
<cffunction name="getEventID" returntype="string">
<cfset var newID = "">
<cflock scope="Application" timeout="5" throwontimeout="true">
<cfquery name="qry" datasource="#DSN#">
SELECT TOP 1 CONVERT(int, eventID) AS eventID
FROM events WHERE ISNUMERIC(eventID) = 1
ORDER BY CONVERT(int, eventID) DESC
</cfquery>
<cfset newID = qry.eventID + 1>
</cflock>
<cfreturn newID>
</cffunction>
Что-то не так с реализацией CFLOCK?