CREATE TABLE prod_day(
id int(11) PRIMARY KEY AUTO_INCREMENT,
heading TEXT,
image TEXT,
text LONGTEXT,
heading_md5 VARCHAR(50),
image_md5 VARCHAR(50),
text_md5 VARCHAR(50),
UNIQUE (heading_md5, image_md5, text_md5)
) ENGINE=InnoDB
然後,要麼有你的PHP腳本計算文本字段的MD5散列或有MySQL的做如下所示:
INSERT IGNORE INTO prod_day
(heading, image, `text`, heading_md5, image_md5, text_md5)
VALUES (
'HEADING Lorem ipsum dolor sit amet, ... truncated ...',
'IMAGE Lorem ipsum dolor sit amet, ... truncated ...',
'TEXT Lorem ipsum dolor sit amet, ... truncated ...',
MD5('HEADING Lorem ipsum dolor sit amet, ... truncated ...'),
MD5('IMAGE Lorem ipsum dolor sit amet, ... truncated ...'),
MD5('TEXT Lorem ipsum dolor sit amet, ... truncated ...')
);
Query OK, 1 row affected (0.03 sec)
INSERT IGNORE INTO prod_day
(heading, image, `text`, heading_md5, image_md5, text_md5)
VALUES (
'HEADING Lorem ipsum dolor sit amet, ... truncated ...',
'IMAGE Lorem ipsum dolor sit amet, ... truncated ...',
'TEXT Lorem ipsum dolor sit amet, ... truncated ...',
MD5('HEADING Lorem ipsum dolor sit amet, ... truncated ...'),
MD5('IMAGE Lorem ipsum dolor sit amet, ... truncated ...'),
MD5('TEXT Lorem ipsum dolor sit amet, ... truncated ...')
);
Query OK, 0 rows affected (0.02 sec) -- 0 rows, duplicate avoided!
你想避免重複所有3列的組合?或每個列本身不能有重複的行? – 2011-03-06 08:07:59
由於'TEXT'類型的索引具有[767個字節]的限制(http://dev.mysql.com/doc/refman/5.0/),您將很難避免重複爲'UNIQUE INDEX'。烯/列indexes.html)。 – 2011-03-06 08:09:33
@The Scrum Meister,我說'完全',即只有當所有3列匹配時,一個條目纔會被認爲是重複的,以防止它再次被插入。 – 2011-03-06 08:10:42