1. ホーム
  2. mysql

[解決済み] 合鍵の無視について?[重複]する

2022-03-08 16:36:34

質問

タグフィールドはUNIQUEに設定されており、データベースが重複したタグを無視するようにしたいだけです。

INSERT INTO table_tags (tag) VALUES ('tag_a'),('tab_b'),('tag_c')
ON DUPLICATE KEY IGNORE '*the offending tag and carry on*'

あるいは、このようなものでもよいでしょう。

INSERT INTO table_tags (tag) VALUES ('tag_a'),('tab_b'),('tag_c')
ON DUPLICATE KEY UPDATE '*the offending tag and carry on*'

解決方法は?

INSERT IGNOREはすべてのエラーを無視するため、使用しないことをお勧めします(つまり、ずさんなグローバル無視です)。 代わりに、あなたの例では tag がユニークキーである場合、これを使用します。

INSERT INTO table_tags (tag) VALUES ('tag_a'),('tab_b'),('tag_c')
ON DUPLICATE KEY UPDATE tag=tag;

重複したキーが生成された場合。

クエリ OK、影響を受ける行数は 0 です (0.07 秒)