Mysql
 sql >> Database >  >> RDS >> Mysql

Ottieni l'ID tabella dopo l'inserimento con ColdFusion e MySQL

Parte 1: Personalmente non farei in batch più istruzioni all'interno di una singola query per ridurre il rischio di SQL injection. Questa è un'impostazione all'interno dell'origine dati nell'amministratore di ColdFusion. L'esecuzione di una procedura memorizzata, che potrebbe essere quello che stai facendo (?), è un'altra storia, ma dovresti riformulare la tua domanda in "Ottieni la chiave primaria dopo l'inserimento con la procedura memorizzata MySQL" se questa è la tua intenzione.

Parte 2: ColdFusion, come molte cose, rende molto facile ottenere la chiave primaria per un record appena inserito, anche se si utilizzano chiavi di incremento automatico, GUID o qualcosa come ROWNUM di Oracle. Funzionerà su quasi tutti i database supportati da Adobe ColdFusion, inclusi MSSQL o MySQL. L'unica eccezione è la versione del databse, ad esempio MySQL 3 non lo supporterà; tuttavia, MySQL 4+ lo farà.

<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>

A partire da CF9+, puoi accedere al nuovo ID (per qualsiasi database) utilizzando il nome chiave generico:

result.GENERATEDKEY    // All databases

Per CF8, database diversi avranno chiavi diverse all'interno del valore dei risultati. Ecco una semplice tabella di aiuto che ho copiato dalla documentazione cfquery .

result.identitycol    // MSSQL
result.rowid          // Oracle
result.sys_identity   // Sybase
result.serial_col     // Informix
result.generated_key  // MySQL

Se hai domande puoi vedere un bel dump come segue:

<cfdump var="#result#" />