La façon dont vous essayez de définir la valeur d'une colonne est une mise à jour. Parce que vous le faites après insertion l'opération est terminée.
Vous avez en fait besoin d'un before
gâchette.
Et pour attribuer la même nouvelle valeur auto-incrémentée de la colonne de clé primaire de la même table, vous feriez mieux de l'obtenir à partir de information_schema.tables
.
Exemple :
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 ;
Remarque :Assurez-vous que vous n'avez pas de déclencheur prédéfini avec le même nom et/ou la même action. Si vous en avez, supprimez-les avant de créer le nouveau.
Observations :
Selon documentation mysql sur last_insert_id()
,
donc, selon last_insert_id()
et auto_increment
les valeurs de champ dans les insertions par lots ne semblent pas fiables.