Question saugrenue. Je sais. Voici le scénario :
Mon client possède plusieurs sites web ColdFusion qui utilisent tous la même bibliothèque sur la même base de données iSeries. Supposons, pour les besoins de l'argumentation, que la requête SQL suivante puisse être exécutée à partir de n'importe lequel de ces sites Web :
<cfquery datasource="myDS">
INSERT INTO XQX.myTable
(
x_ID,
x_Name,
x_Phone
)
VALUES
(
#myId#,
#Name#,
#Phone#
)
</cfquery>
(Je sais qu'il n'y a pas de CFQUERYPARAMs, etc., supposons simplement pour des raisons de simplicité que la requête ci-dessus est A-Ok)
Je pourrais générer l'Id en interrogeant la table avant l'insertion pour obtenir la valeur maximale, puis en l'incrémentant, comme suit :
<cfquery name="qMaxId" datasource="myDS">
SELECT MAX(x_Id) AS MaxId
FROM XQX.myTable
</cfquery>
<cfset myId = qMaxId.MaxId + 1 />
Mais je crains que deux utilisateurs n'utilisent la table au même moment et n'obtiennent tous deux la même "nouvelle" Id.
Qu'en pensez-vous ?