2

私の理解では、INSERT IGNOREは、まだ存在しない場合は新しいエントリを挿入し、存在する場合は無視します。だから私はしばらくそれをやろうとしていましたが、うまくいかないようです。これが私の試みです:

insert insert ignore into rss_feeds (md5sum) values ("1234");
Query OK, 1 row affected (0.00 sec)

mysql> insert ignore into rss_feeds (md5sum) values ("1234");
Query OK, 1 row affected (0.00 sec)

mysql> insert ignore into rss_feeds (md5sum) values ("1234");
Query OK, 1 row affected (0.00 sec)

mysql> insert ignore into rss_feeds (md5sum) values ("1234");
Query OK, 1 row affected (0.00 sec)

mysql> select * from rss_feeds where md5sum="1234";
+------+--------+----------+---------+----------+--------+--------+---------+
| link | source | headline | updated | inserted | md5sum | itemid | emailed |
+------+--------+----------+---------+----------+--------+--------+---------+
| NULL | NULL   | NULL     | NULL    | NULL     | 1234   |   NULL |    NULL |
| NULL | NULL   | NULL     | NULL    | NULL     | 1234   |   NULL |    NULL |
| NULL | NULL   | NULL     | NULL    | NULL     | 1234   |   NULL |    NULL |
| NULL | NULL   | NULL     | NULL    | NULL     | 1234   |   NULL |    NULL | 
+------+--------+----------+---------+----------+--------+--------+---------+
4 rows in set (0.00 sec)
4

2 に答える 2

8

INSERT構文で説明されているように:

がないと、テーブル内IGNOREの既存のUNIQUEインデックスまたはPRIMARY KEY値を複製する行が重複キーエラーを引き起こし、ステートメントが中止されます。を使用IGNOREしても、行は挿入されませんが、エラーは発行されません。

UNIQUEインデックスを定義する必要がありますmd5sum

ALTER TABLE rss_feeds ADD UNIQUE INDEX (md5sum);
于 2012-09-14T17:11:30.583 に答える
0

IGNOREは、一意のキー制約によって生成されたエラーを無視します。基本的に、挿入中に発生したエラーはすべて無視されます。

于 2012-09-14T17:11:23.037 に答える