sql >> Databáze >  >> RDS >> Mysql

Získejte ID tabulky po vložení pomocí ColdFusion a MySQL

Část 1: Osobně bych nedávkoval více příkazů v rámci jednoho dotazu, aby se snížilo riziko injekce SQL. Toto je nastavení ve vašem zdroji dat na správci ColdFusion. Spuštění uložené procedury, což může být to, co děláte(?), je jiný příběh, ale měli byste přeformulovat svou otázku na "Získat primární klíč po vložení pomocí uložené procedury mySQL", pokud je to vaším záměrem.

Část 2: ColdFusion, jako mnoho věcí, velmi usnadňuje získání primárního klíče pro nově vložený záznam – i když používáte klíče s automatickým přírůstkem, GUID nebo něco jako ROWNUM od Oracle. To bude fungovat na téměř každé databázi podporované Adobe ColdFusion včetně MSSQL nebo MySQL. Jedinou výjimkou je verze databáze – například MySQL 3 to nepodporuje; MySQL 4+ však ano.

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

Od CF9+ můžete přistupovat k novému ID (pro jakoukoli databázi) pomocí názvu obecného klíče:

result.GENERATEDKEY    // All databases

Pro CF8 budou mít různé databáze různé klíče v rámci hodnoty výsledků. Zde je jednoduchá tabulka, která mi pomůže zkopírovat z dokumentace.html .

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

Pokud máte nějaké dotazy, můžete si prohlédnout pěkný výpis následovně:

<cfdump var="#result#" />


  1. Nelze vygenerovat rozdíl oproti pluginu liquibase gradle

  2. apostrof během vkládání (Mysql)

  3. MariaDB Jednotky data a času

  4. Jak převést řádky na sloupce v Oracle?