私はこの問題を見てきましたが(下部のリンクを参照)、答えがわからないようです。問題は、主キーである自動インクリメントIDを持つテーブルと、重複を避けるためにUNIQUEインデックスを持つ別のフィールドにデータを挿入することです。これは機能しますが、データが保存されていなくても、IDがインクリメントされます。
自動インクリメントを削除し、max(ID)を選択して自分で処理する方がよいでしょうか?
現時点では、それをそのまま機能させるために、次のようないくつかの戦略を試しましたINSERT IGNORE
。INSERT ... ON DUPLICATE KEY UPDATE
私の最近の試みは、次のクエリを使用することでした。
INSERT INTO
content(field1, field2)
SELECT(:field1, :field2) FROM DUAL
WHERE NOT EXISTS(
SELECT field1, field2
FROM content
WHERE field1 = :field1
)
関連している