Del 1: Jeg ville personligt ikke batch flere sætninger inden for en enkelt forespørgsel for at reducere risikoen for SQL-injektion. Dette er en indstilling i din datakilde på ColdFusion-administratoren. At udføre en lagret procedure, som måske er det, du gør(?), er en anden historie, men du bør omformulere dit spørgsmål til "Hent primær nøgle efter indsættelse med mySQL Stored Procedure", hvis det er din hensigt.
Del 2: ColdFusion gør, ligesom mange andre ting, det meget nemt at få den primære nøgle til en nyligt indsat post - også selvom du bruger auto-increment nøgler, GUID'er eller noget som Oracles ROWNUM. Dette vil fungere på næsten alle databaser, der understøttes af Adobe ColdFusion, inklusive MSSQL eller MySQL. Den eneste undtagelse er versionen af databasen - for eksempel vil MySQL 3 ikke understøtte dette; dog vil MySQL 4+.
<cfquery result="result">
INSERT INTO myTable (
title
) VALUES (
<cfqueryparam value="Nice feature!" cfsqltype="cf_sql_varchar">
)
</cfquery>
<--- get the primary key of the inserted record --->
<cfset NewPrimaryKey = result.generatedkey>
Fra og med CF9+ kan du få adgang til det nye ID (for enhver database) ved at bruge det generiske nøglenavn:
result.GENERATEDKEY // All databases
For CF8 vil forskellige databaser have forskellige nøgler i resultatværdien. Her er en simpel tabel til hjælp, som jeg kopierede fra cbec22c24-7fae.html .
result.identitycol // MSSQL
result.rowid // Oracle
result.sys_identity // Sybase
result.serial_col // Informix
result.generated_key // MySQL
Hvis du har spørgsmål, kan du se en smuk dump som følger:
<cfdump var="#result#" />