Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

atualizar coluna da tabela após inserir novo registro usando gatilhos do MySQL


A maneira como você está tentando definir o valor para uma coluna é uma atualização. Porque você está fazendo isso após inserir operação é concluída.

Você realmente precisa de um before acionar.

E para atribuir o mesmo novo valor incrementado automaticamente da coluna de chave primária da mesma tabela, é melhor obtê-lo em information_schema.tables .

Exemplo :
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 ;

Observação :Certifique-se de que você não tenha nenhum gatilho pré-definido com o mesmo nome e/ou ação. Se tiver algum, solte-o antes de criar o novo.

Observações :
De acordo com documentação do mysql em last_insert_id() ,

portanto, dependendo de last_insert_id() e auto_increment valores de campo em inserções em lote não parecem confiáveis.