Tak. Nie możesz mieć wielu pól automatycznego zwiększania w jednej tabeli.
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()
zwraca wartość tylko dla kolumny zadeklarowanej AUTO_INCREMENT
. Nie ma funkcji zwracającej wartość w złożonym kluczu podstawowym, której nie było generowane przez system. Powinieneś już znać tę wartość, ponieważ właśnie podałeś ją w INSERT
oświadczenie. Trudnym przypadkiem jest sytuacja, w której wyzwalacz lub coś nadpisuje wartość.