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#" />