sql >> Databasteknik >  >> RDS >> Mysql

Få tabell-ID efter infogning med ColdFusion och MySQL

Del 1: Jag skulle personligen inte batcha flera satser inom en enda fråga för att minska risken för SQL-injektion. Detta är en inställning i din datakälla på ColdFusion-administratören. Att köra en lagrad procedur, vilket kan vara vad du gör(?), är en annan historia, men du bör omformulera din fråga till "Hämta primärnyckel efter infogning med mySQL Stored Procedure" om det är din avsikt.

Del 2: ColdFusion, som många andra saker, gör det mycket enkelt att få primärnyckeln för en nyinfogad post - även om du använder nycklar för automatisk ökning, GUID eller något som Oracles ROWNUM. Detta kommer att fungera på nästan alla databaser som stöds av Adobe ColdFusion, inklusive MSSQL eller MySQL. Det enda undantaget är versionen av databasen - till exempel kommer MySQL 3 inte att stödja detta; men MySQL 4+ kommer.

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

Från och med CF9+ kan du komma åt det nya ID:t (för vilken databas som helst) med det generiska nyckelnamnet:

result.GENERATEDKEY    // All databases

För CF8 kommer olika databaser att ha olika nycklar inom resultatvärdet. Här är en enkel tabell som jag kopierade från cbec22c24-7fae.html .

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

Om du har några frågor kan du se en vacker dump enligt följande:

<cfdump var="#result#" />


  1. MySQL JOIN med LIMIT 1 på sammanfogat bord

  2. MySQL-fråga kontrollera två värden i en kolumn

  3. solfläck solr odefinierad fälttyp

  4. Postgres unika begränsning vs index