De manier waarop u de waarde van een kolom probeert in te stellen, is een update. Omdat je het doet na het invoegen bewerking is voltooid.
Je hebt eigenlijk een before
. nodig trekker.
En om dezelfde nieuwe automatisch verhoogde waarde van de primaire sleutelkolom van dezelfde tabel toe te wijzen, kunt u deze beter uit information_schema.tables
halen. .
Voorbeeld :
delimiter //
drop trigger if exists bi_table_name //
create trigger bi_table_name before insert on table_name
for each row begin
set @auto_id := ( SELECT AUTO_INCREMENT
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME='table_name'
AND TABLE_SCHEMA=DATABASE() );
set new.priority= @auto_id;
end;
//
delimiter ;
Opmerking :Zorg ervoor dat je geen voorgedefinieerde trigger met dezelfde naam en/of actie hebt. Als je er een hebt, laat ze dan vallen voordat je de nieuwe maakt.
Opmerkingen :
Volgens mysql-documentatie op last_insert_id()
,
vandaar, afhankelijk van last_insert_id()
en auto_increment
veldwaarden in batch-inserts lijken niet betrouwbaar.