Forum Webscript.Ru

Общие => Базы данных => Тема начата: golden-den от 18 Июля 2007, 22:02:15

Название: insert без дупликатов
Отправлено: golden-den от 18 Июля 2007, 22:02:15
CREATE TABLE `catalog_data` (
  `id` int(11) NOT NULL auto_increment,
  `cid` int(16) default NULL,
  `title` text
  PRIMARY KEY  (`id`)
) TYPE=MyISAM


Как добавить в эту таблицу 1 строку, только так чтобы не было дупликатов со значениями \'cid\'.

Делать сначала один запрос,  в которм проверять наличие строки, а заетм, если еще нет такой строки, то вторым запросом добавлять?
Можно ли одним запросом сделать?
Название: insert без дупликатов
Отправлено: fidget от 19 Июля 2007, 10:37:56
создать unique key(cid) и использовать INSERT IGNORE или REPLACE
Название: insert без дупликатов
Отправлено: hanslinger от 19 Июля 2007, 13:42:25
fidget
гм
ну, дупликатов точно не будет :-)
но подозреваю, что цели преследуются несколько иные :)
Название: insert без дупликатов
Отправлено: fidget от 20 Июля 2007, 13:33:28
hanslinger, у него цель сделать добавление одним запросом так чтобы не было дубликатов.
Название: insert без дупликатов
Отправлено: golden-den от 21 Июля 2007, 08:09:40
fidget
Да. хочу одним запросом добавить все записи (а их бывает много), так чтобы новые добавились, а старые сделали update
Название: insert без дупликатов
Отправлено: fidget от 21 Июля 2007, 09:07:43
тогда смотрите в сторону либо REPLACE либо INSERT .. ON DUPLICATE KEY UPDATE.

Нов обоих случаях вам нужно создать UNIQUE KEY на этот столбец.