Просто используйте ключ UNIQUE для столбцов и инструкцию INSERT IGNORE для вставки новых строк (дублирующиеся строки игнорируются).
Помните, что ключ UNIQUE не может превышать 1000 байтов, а это означает, что потенциальное количество байтов, содержащихся в полях foo
и bar
вместе, не может превышать 1000 байтов.Если это создает проблему, просто вставьте MD5 CONCATENATED значения в его собственный столбец во время вставки, например (в PHP) md5 ($ foo. $ Bar), и установите уникальный ключ для этого столбца.
CREATE TABLE `test_unique` (
`id` int(10) unsigned NOT NULL auto_increment,
`foo` varchar(45) default NULL,
`bar` varchar(45) default NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `Unique` (`foo`,`bar`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT IGNORE INTO `test_unique` VALUES
(1, 'foo1', 'bar1'),
(2, 'foo2', 'bar2');
INSERT IGNORE INTO `test_unique` VALUES
(2, 'foo2', 'bar2');