sql >> Base de Datos >  >> RDS >> Mysql

actualizar la columna de la tabla después de insertar un nuevo registro usando disparadores de MySQL

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.