Den måde, du forsøger at indstille værdi til en kolonne på, er en opdatering. Fordi du gør det efter indsættelse handlingen er fuldført.
Du har faktisk brug for en before
udløser.
Og for at tildele den samme nye automatiske øgede værdi af primærnøglekolonnen i samme tabel, må du hellere hente den fra information_schema.tables
.
Eksempel :
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 ;
Bemærk :Sørg for, at du ikke har nogen foruddefineret trigger med samme navn og/eller handling. Hvis du har nogle, så slip dem, før du opretter den nye.
Observationer :
I henhold til mysql-dokumentation på last_insert_id()
,
derfor afhængigt af last_insert_id()
og auto_increment
feltværdier i batch-indsæt virker ikke pålidelige.