Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Nhận ID bảng sau khi chèn với ColdFusion và MySQL

Phần 1: Cá nhân tôi sẽ không thực hiện hàng loạt các câu lệnh trong một truy vấn để giảm nguy cơ chèn SQL. Đây là cài đặt trong nguồn dữ liệu của bạn trên quản trị viên ColdFusion. Việc thực thi một thủ tục được lưu trữ, có thể là những gì bạn đang làm (?), Là một câu chuyện khác, nhưng bạn nên diễn đạt lại câu hỏi của mình thành "Nhận khóa chính sau khi chèn bằng Thủ tục được lưu trữ trong mySQL" nếu đó là ý định của bạn.

Phần 2: ColdFusion, giống như nhiều thứ khác, làm cho việc lấy khóa chính cho một bản ghi mới được chèn vào rất dễ dàng - ngay cả khi bạn đang sử dụng khóa tăng tự động, GUID hoặc thứ gì đó như ROWNUM của Oracle. Điều này sẽ hoạt động trên hầu hết mọi cơ sở dữ liệu được hỗ trợ bởi Adobe ColdFusion bao gồm MSSQL hoặc MySQL. Ngoại lệ duy nhất là phiên bản của databse - ví dụ:MySQL 3 sẽ không hỗ trợ điều này; tuy nhiên, MySQL 4+ sẽ.

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

Kể từ CF9 +, bạn có thể truy cập ID mới (cho bất kỳ cơ sở dữ liệu nào) bằng cách sử dụng tên khóa chung:

result.GENERATEDKEY    // All databases

Đối với CF8, các cơ sở dữ liệu khác nhau sẽ có các khóa khác nhau trong giá trị kết quả. Đây là một bảng đơn giản để giúp tôi sao chép từ tài liệu truy vấn .

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

Nếu bạn có bất kỳ câu hỏi nào, bạn có thể thấy một kết xuất khá như sau:

<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. Làm thế nào để tạo / autoincrement hướng dẫn về chèn mà không có trình kích hoạt và chèn thủ công trong mysql?

  2. Cách thay đổi kích thước cột trong MySQL

  3. Làm cách nào để kết hợp hai câu lệnh CẬP NHẬT trong một truy vấn MySQL?

  4. không thể hiển thị kết quả truy vấn trong một bộ mã chế độ xem

  5. Nhận chênh lệch năm giữa hai ngày trong MySQL dưới dạng số nguyên