Đúng. Bạn không thể có nhiều trường tăng tự động trong một bảng.
CREATE TABLE foo (
id1 int(11) NOT NULL auto_increment,
id2 int(11) NOT NULL default '0',
PRIMARY KEY (id1, id2)
);
INSERT INTO foo VALUES (DEFAULT, 2);
SELECT LAST_INSERT_ID(); -- returns 1, the value generated for id1
LAST_INSERT_ID()
chỉ trả về giá trị cho một cột được khai báo AUTO_INCREMENT
. Không có chức năng nào trả lại giá trị trong khóa chính kết hợp không phải do hệ thống tạo ra. Bạn nên biết giá trị đó rồi, vì bạn vừa nhập giá trị đó trong INSERT
tuyên bố. Trường hợp phức tạp sẽ là khi một trình kích hoạt hoặc thứ gì đó ghi đè giá trị.