Jest to rozwiązanie sugerowane przez Instrukcja MySQL :
Jeśli wyrażenie jest podane jako argument funkcji LAST_INSERT_ID(), wartość argumentu jest zwracana przez funkcję i jest pamiętana jako następna wartość do zwrócenia przez LAST_INSERT_ID(). Można to wykorzystać do symulacji sekwencji:
Utwórz tabelę do przechowywania licznika sekwencji i zainicjuj go:
mysql> CREATE TABLE sequence (id INT NOT NULL);
mysql> INSERT INTO sequence VALUES (0);
Użyj tabeli, aby wygenerować numery sekwencyjne w następujący sposób:
mysql> UPDATE sequence SET id=LAST_INSERT_ID(id+1);
mysql> SELECT LAST_INSERT_ID();
Instrukcja UPDATE zwiększa licznik sekwencji i powoduje, że następne wywołanie LAST_INSERT_ID() zwraca zaktualizowaną wartość. Instrukcja SELECT pobiera tę wartość. Do uzyskania wartości można również użyć funkcji API mysql_insert_id() C. Zobacz Sekcja 23.8.7.37,„mysql_insert_id()”.
Możesz generować sekwencje bez wywoływania LAST_INSERT_ID(), ale użyteczność użycia funkcji w ten sposób polega na tym, że wartość ID jest zachowywana na serwerze jako ostatnia automatycznie generowana wartość. Jest to bezpieczne dla wielu użytkowników, ponieważ wielu klientów może wydać instrukcję UPDATE i uzyskać własną wartość sekwencji za pomocą instrukcji SELECT (lub mysql_insert_id()), bez wpływu lub wpływu innych klientów, którzy generują własne wartości sekwencji.