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 回答