Sättet du försöker ställa in värde på en kolumn är en uppdatering. Eftersom du gör det efter infogning operationen är klar.
Du behöver faktiskt en before
utlösare.
Och för att tilldela samma nya automatiskt inkrementerade värde för primärnyckelkolumnen i samma tabell, bör du hämta det från information_schema.tables
.
Exempel :
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 ;
Obs :Se till att du inte har någon fördefinierad utlösare med samma namn och/eller åtgärd. Om du har några, släpp dem innan du skapar den nya.
Observationer :
Enligt mysql-dokumentation på last_insert_id()
,
därför, beroende på last_insert_id()
och auto_increment
fältvärden i batchinlägg verkar inte tillförlitliga.