パート1: SQLインジェクションのリスクを減らすために、個人的には1つのクエリ内で複数のステートメントをバッチ処理することはありません。これは、ColdFusionAdministratorのデータソース内の設定です。ストアドプロシージャを実行することは別の話ですが、それが意図されている場合は、質問を「mySQLストアドプロシージャで挿入した後に主キーを取得する」に言い換える必要があります。
パート2: 多くの場合と同様に、ColdFusionを使用すると、自動インクリメントキー、GUID、またはOracleのROWNUMなどを使用している場合でも、新しく挿入されたレコードの主キーを非常に簡単に取得できます。これは、MSSQLやMySQLなど、AdobeColdFusionでサポートされているほぼすべてのデータベースで機能します。唯一の例外はデータベースのバージョンです。たとえば、MySQL3はこれをサポートしません。ただし、MySQL4以降はそうなります。
<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 +以降、汎用キー名を使用して(任意のデータベースの)新しいIDにアクセスできます:
result.GENERATEDKEY // All databases
CF8の場合、データベースが異なれば、結果値内のキーも異なります。 cfqueryのドキュメントからコピーした簡単な表を次に示します。 。
result.identitycol // MSSQL
result.rowid // Oracle
result.sys_identity // Sybase
result.serial_col // Informix
result.generated_key // MySQL
質問がある場合は、次のようにかなりのダンプを見ることができます:
<cfdump var="#result#" />