Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Dapatkan ID tabel setelah dimasukkan dengan ColdFusion dan MySQL

Bagian 1: Saya pribadi tidak akan mengelompokkan banyak pernyataan dalam satu kueri untuk mengurangi risiko injeksi SQL. Ini adalah pengaturan dalam sumber data Anda pada administrator ColdFusion. Menjalankan prosedur tersimpan, yang mungkin Anda lakukan (?), adalah cerita lain, tetapi, Anda harus mengulangi pertanyaan Anda menjadi "Dapatkan kunci utama setelah dimasukkan dengan Prosedur Tersimpan mySQL" jika itu adalah niat Anda.

Bagian 2: ColdFusion, seperti banyak hal, membuat mendapatkan kunci utama untuk catatan yang baru dimasukkan menjadi sangat mudah--bahkan jika Anda menggunakan kunci kenaikan otomatis, GUID atau sesuatu seperti ROWNUM Oracle. Ini akan bekerja pada hampir semua database yang didukung oleh Adobe ColdFusion termasuk MSSQL atau MySQL. Satu-satunya pengecualian adalah versi database--misalnya, MySQL 3 tidak akan mendukung ini; namun, MySQL 4+ akan.

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

Mulai CF9+, Anda dapat mengakses ID baru (untuk basis data apa pun) menggunakan nama kunci umum:

result.GENERATEDKEY    // All databases

Untuk CF8, database yang berbeda akan memiliki kunci yang berbeda dalam nilai hasil. Berikut adalah tabel sederhana untuk membantu saya menyalin dari dokumentasi cfquery .

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

Jika Anda memiliki pertanyaan, Anda dapat melihat dump cantik sebagai berikut:

<cfdump var="#result#" />


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Peringatan direktori pengguna/local/mysql/data tidak dimiliki oleh pengguna mysql

  2. Kerangka Entitas dengan MySQL - Batas Waktu Kedaluwarsa saat Membuat Model

  3. Persimpangan kueri dengan activerecord

  4. MySQL INSERT - Apakah nama bidang memerlukan deliminasi backtick/aksen?

  5. Penyemaian SQLite RANDOM()