Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Rufen Sie die Tabellen-ID nach dem Einfügen mit ColdFusion und MySQL ab

Teil 1: Ich persönlich würde nicht mehrere Anweisungen innerhalb einer einzigen Abfrage stapeln, um das Risiko einer SQL-Injektion zu verringern. Dies ist eine Einstellung in Ihrer Datenquelle auf dem ColdFusion-Administrator. Das Ausführen einer gespeicherten Prozedur, was Sie möglicherweise tun (?), ist eine andere Geschichte, aber Sie sollten Ihre Frage in "Primärschlüssel nach dem Einfügen mit mySQL Stored Procedure abrufen" umformulieren, wenn dies Ihre Absicht ist.

Teil 2: ColdFusion macht es, wie viele andere Dinge, sehr einfach, den Primärschlüssel für einen neu eingefügten Datensatz zu erhalten – selbst wenn Sie Auto-Increment-Schlüssel, GUIDs oder etwas wie Oracles ROWNUM verwenden. Dies funktioniert mit fast jeder Datenbank, die von Adobe ColdFusion unterstützt wird, einschließlich MSSQL oder MySQL. Die einzige Ausnahme ist die Version der Datenbank – zum Beispiel wird MySQL 3 dies nicht unterstützen; jedoch wird 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>

Ab CF9+ können Sie auf die neue ID (für jede Datenbank) mit dem generischen Schlüsselnamen zugreifen:

result.GENERATEDKEY    // All databases

Für CF8 haben unterschiedliche Datenbanken unterschiedliche Schlüssel innerhalb des Ergebniswerts. Hier ist eine einfache Tabelle, die ich aus der cfquery-Dokumentation kopiert habe .

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

Wenn Sie Fragen haben, können Sie einen hübschen Dump wie folgt sehen:

<cfdump var="#result#" />