Olá. Eu estou começando a usar triggers no Mysql. Eu queria criar um trigger que dê um reset no AUTO_INCREMENT da tabela assim que a mesma não possua nenhum registro. Então eu fiz a seguinte estrutura:
delimiter $$
create trigger reset_auto_increment after delete on usuarios
begin
if (SELECT COUNT(*) FROM usuarios == 0) THEN
ALTER TABLE usuarios AUTO_INCREMENT = 1;
end if;
end $$
delimiter ;
Porém eu estou recebendo uma mensagem de erro de sintaxe. Alguém sabe me explicar o que eu fiz de errado?
Thallysson, seu select esta incorreto:
Troque
if (SELECT COUNT(*) FROM usuarios == 0) THEN
Por
if (SELECT COUNT(*) FROM usuarios) = 0 THEN
No entanto, você não conseguirá fazer o que deseja, pois, você receberá a seguinte mensagem:
Explicit or implicit commit is not allowed in stored function or trigger.
Ou seja, não será possível fazer via trigger diretamente, veja se consegue fazer chamando uma sp em que a sp faz o alter table.
Espero ter ajudado.
_ _
Fabiano Abreu
Papo SQL
1 curtida
Valeu pela ajuda. Eu nunca havia utilizado estruturas condicionais no Mysql, é bom conhecer a estrutura. Eu queria que fosse em um trigger mesmo. Porque vai ser útil só no desenvolvimento, já que eu deleto todos os registros as vezes, e depois que eu tiver o cliente pronto, não farei mais isso. Eu notei que se eu registrar um usuário e a id dele for 1 (AUTO_INCREMENT) e eu deleta-lo, quando eu cadastrar outro usuário, a id dele vai ser 2 mesmo sendo o único registro, e achei que isso ficou muito feio. Mas se não é possível tranquilo.