sql >> Database >  >> RDS >> Mysql

Tabel-ID ophalen na invoegen met ColdFusion en MySQL

Deel 1: Persoonlijk zou ik niet meerdere verklaringen in één enkele query bundelen om het risico van SQL-injectie te verminderen. Dit is een instelling binnen uw gegevensbron op de ColdFusion-beheerder. Het uitvoeren van een opgeslagen procedure, wat mogelijk is wat u aan het doen bent (?), is een ander verhaal, maar u moet uw vraag herformuleren in "Primaire sleutel ophalen na invoegen met mySQL Stored Procedure" als dat uw bedoeling is.

Deel 2: ColdFusion maakt, zoals zoveel dingen, het verkrijgen van de primaire sleutel voor een nieuw ingevoegd record heel gemakkelijk - zelfs als u auto-increment-sleutels, GUID's of iets als Oracle's ROWNUM gebruikt. Dit werkt op bijna elke database die wordt ondersteund door Adobe ColdFusion, inclusief MSSQL of MySQL. De enige uitzondering is de versie van de database - MySQL 3 ondersteunt dit bijvoorbeeld niet; MySQL 4+ echter wel.

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

Vanaf CF9+ hebt u toegang tot de nieuwe ID (voor elke database) met behulp van de generieke sleutelnaam:

result.GENERATEDKEY    // All databases

Voor CF8 hebben verschillende databases verschillende sleutels binnen de resultaatwaarde. Hier is een eenvoudige tabel die ik heb gekopieerd uit de cfquery-documentatie .

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

Als je vragen hebt, kun je een mooie stortplaats als volgt zien:

<cfdump var="#result#" />


  1. Hoe Atan2() werkt in PostgreSQL

  2. Voorwaardelijke lead/lag-functie PostgreSQL?

  3. Omgaan met MySQL Full Text speciale tekens

  4. Twee dubbele indexen met dezelfde kolommen