Quando eseguo una singola riga INSERT
su una tabella con una AUTO_INCREMENT
colonna, vorrei utilizzare la LAST_INSERT_ID()
funzione per restituire il nuovo AUTO_INCREMENT
valore "ed" memorizzato per quella riga.
Poiché molti sviluppatori e amministratori di Microsoft SQL Server sono senza dubbio consapevoli che le funzionalità equivalenti in SQL Server ( SCOPE_IDENTITY
e @@IDENTITY
) non sono state prive di problemi .
Conosco lo stato dei documenti MySQL:
L'ID che è stato generato viene gestito nel server in base alla connessione . Ciò significa che il valore restituito dalla funzione a un determinato client è il primo
AUTO_INCREMENT
valore generato per l'ultima istruzione che interessa unaAUTO_INCREMENT
colonna da quel client . Questo valore non può essere influenzato da altri client, anche se generanoAUTO_INCREMENT
valori propri. Questo comportamento garantisce che ogni client possa recuperare il proprio ID senza preoccuparsi dell'attività di altri client e senza la necessità di blocchi o transazioni.
e arriva persino a dire:
L'uso
LAST_INSERT_ID()
e leAUTO_INCREMENT
colonne contemporaneamente da più client è perfettamente valido.
Esistono rischi o scenari noti che potrebbero causare la LAST_INSERT_ID()
mancata restituzione del valore corretto?
Sto usando MySQL 5.5 su CentOS 5.5 x64 e Fedora 16 x64 e il motore InnoDB.