Il modo in cui stai tentando di impostare il valore su una colonna è un aggiornamento. Perché lo stai facendo dopo l'inserimento operazione completata.
In realtà hai bisogno di un before
grilletto.
E per assegnare lo stesso nuovo valore con incremento automatico della colonna della chiave primaria della stessa tabella, è meglio ottenerlo da information_schema.tables
.
Esempio :
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 ;
Nota :Assicurati di non avere alcun attivatore predefinito con lo stesso nome e/o azione. Se ne hai alcuni, rilasciali prima di creare il nuovo.
Osservazioni :
Come da documentazione mysql su last_insert_id()
,
quindi, a seconda di last_insert_id()
e auto_increment
i valori dei campi negli inserimenti batch non sembrano affidabili.