0

レジスタが存在するときにエラーが発生したため、SQLファイルに挿入してどこかにSQLデータベースをインポートしようとしているだけなので、レジスタが存在する場合は何も作成しません(挿入しないでください)。で試した

INSERT INTO menu VALUES('Arsenal FC','?team=arsenal fc')
ON DUPLICATE KEY IGNORE '*already inserted*';

またIF NO EXISTS INSERT INTO menu Values('Arsenal FC','?team=arsenal fc');

重複キーの更新についても聞いたことがありますが、存在するときに挿入したくないだけで更新したくありません。

4

2 に答える 2

0

どうですか:

INSERT IGNORE INTO menu VALUES('Arsenal FC','?team=arsenal fc');

ここに記載されているとおり: http://dev.mysql.com/doc/refman/5.5/en/insert.html

于 2013-03-25T17:52:20.860 に答える
0

既存のデータをすべて無視したい場合、最も受け入れられている方法が 2 つあります。

  1. INSERT IGNOREを使用する

    INSERT IGNORE INTO menu VALUES('アーセナル FC','?team=アーセナル fc');

  2. ON DUPLICATE KEY UPDATE」のような使用

    INSERT INTO menu VALUES('Arsenal FC','?team=arsenal fc') ON DUPLICATE KEY UPDATE key=key

    //注:キーは一意または主キーの制約であると想定しています。

しかし、 INSERT IGNOREを使用すると すべてのエラーが無視されるため (つまり、ずさんなグローバル無視)、ON DUPLICATE KEY UPDATEという2 番目の方法を使用することをお勧めします。重複キーになる場合、行は実際には挿入されません。ただし、ステートメントはエラーを生成しません。代わりに警告が生成されます。最も重要なことは、テーブルにキー制約がない場合は、テーブルを一意または主キーで変更する必要があることです。

于 2013-03-25T18:35:02.207 に答える