Част 1: Аз лично не бих събирал множество изрази в рамките на една заявка, за да намаля риска от SQL инжекция. Това е настройка във вашия източник на данни на администратора на ColdFusion. Изпълнението на съхранена процедура, което може да е това, което правите (?), е друга история, но трябва да префразирате въпроса си на „Вземете първичен ключ след вмъкване с mySQL Stored Procedure“, ако това е вашето намерение.
Част 2: ColdFusion, както много неща, прави получаването на първичния ключ за нововмъкнат запис много лесно - дори ако използвате ключове за автоматично увеличение, GUID или нещо като ROWNUM на Oracle. Това ще работи с почти всяка база данни, поддържана от Adobe ColdFusion, включително MSSQL или MySQL. Единственото изключение е версията на базата данни - например MySQL 3 няма да поддържа това; обаче 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>
От CF9+ можете да получите достъп до новия идентификатор (за всяка база данни), като използвате общото име на ключ:
result.GENERATEDKEY // All databases
За CF8 различните бази данни ще имат различни ключове в стойността на резултатите. Ето една проста таблица в помощ, която копирах от документа .
result.identitycol // MSSQL
result.rowid // Oracle
result.sys_identity // Sybase
result.serial_col // Informix
result.generated_key // MySQL
Ако имате някакви въпроси, можете да видите доста сметище, както следва:
<cfdump var="#result#" />