INSERTを次のように変更できます:
INSERT INTO tablename (tag)
SELECT $tag
FROM tablename
WHERE NOT EXISTS(
SELECT tag
FROM tablename
WHERE tag = $tag
)
LIMIT 1
$tag
の場所 まだ存在しない場合に追加するタグ(適切に引用されているか、もちろんプレースホルダーとして)です。タグがすでに存在する場合、このアプローチではINSERT(およびその後の自動インクリメントの浪費)はトリガーされません。おそらくそれよりも優れたSQLを思い付くことができますが、上記でうまくいくはずです。
テーブルに適切なインデックスが付けられている場合、存在チェック用の追加のSELECTは高速になり、データベースはとにかくそのチェックを実行する必要があります。
ただし、このアプローチは最初のタグでは機能しません。常に使用されると思われるタグをタグテーブルにシードするか、空のテーブルを個別にチェックすることができます。