La forma en que intenta establecer el valor de una columna es una actualización. Porque lo estás haciendo después de insertar la operación se ha completado.
De hecho, necesitas un before
generar.
Y para asignar el mismo nuevo valor incrementado automáticamente de la columna de clave principal de la misma tabla, es mejor que lo obtenga de information_schema.tables
.
Ejemplo :
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 :Asegúrese de no tener ningún disparador predefinido con el mismo nombre y/o acción. Si tiene alguno, suéltelo antes de crear el nuevo.
Observaciones :
Según documentación de mysql en last_insert_id()
,
por lo tanto, dependiendo de last_insert_id()
y auto_increment
los valores de campo en las inserciones por lotes no parecen confiables.