1

insert ignore ステートメントを使用してデータベースに名前を付けようとしています。重複を作成したくありませんが、使用する挿入無視ステートメントは挿入を続けます!

ステートメントは次のとおりです。

INSERT IGNORE INTO firstname(name) VALUES ('Tommy')

私のデータベースはこれを示しています:

id  |  name
-------------
1      Tommy
2      Tommy
3      Tommy

私を助けてくれる人々のためのいくつかの情報。私のIDは私の主キーであり、自動インクリメントされます。

私の推測では、新しい ID が自動的に作成されるため、新しい結果と見なされます。Tommyという名前が最初に存在するかどうかをチェックするより大きなSQLクエリでこの例外を解決する方法がわかりません

ありがとう

4

3 に答える 3

5

テーブルの列nameが であるためです。この DDL ステートメントを使用して制約を追加してみてください。firstnamenot uniqueunique

ALTER TABLE firstname ADD UNIQUE (name);

それでも重複する名前が追加されるかどうか試してください。それが今うまくいくことを願っています:)

于 2012-08-11T09:12:57.993 に答える
0

「名前」列に「一意のキー」制約を設定しようとしましたか?

于 2012-08-11T09:14:02.723 に答える
0

スキーマを考えると、使用しIGNOREても違いはありません。IGNORE挿入中に発生する可能性のあるエラーを無視するために使用されます。

名前列の重複を避けるには、UNIQUEその列に制約を追加し、ステートメントIGNOREからキーワードを削除します。INSERTを使用し続けるIGNOREと、UNIQUE制約によってエラーが発生しますが、無視されます。つまり、実際にはUNIQUE制約が無視されます。

于 2012-08-11T09:15:39.367 に答える