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

Impedir o incremento automático na inserção duplicada do MySQL


Você pode modificar seu INSERT para algo assim:
INSERT INTO tablename (tag)
SELECT $tag
FROM tablename
WHERE NOT EXISTS(
    SELECT tag
    FROM tablename
    WHERE tag = $tag
)
LIMIT 1

Onde $tag é a tag (corretamente citada ou como um espaço reservado, é claro) que você deseja adicionar se ainda não estiver lá. Essa abordagem nem mesmo acionará um INSERT (e o subsequente desperdício de autoincremento) se a tag já estiver lá. Você provavelmente poderia criar um SQL melhor do que isso, mas o acima deve fazer o truque.

Se sua tabela estiver indexada corretamente, o SELECT extra para a verificação de existência será rápido e o banco de dados terá que realizar essa verificação de qualquer maneira.

Essa abordagem não funcionará para a primeira tag. Você pode semear sua tabela de tags com uma tag que você acha que sempre será usada ou você pode fazer uma verificação separada para uma tabela vazia.