Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Дублирование записи и несработка replace (https://javascript.ru/forum/server/29542-dublirovanie-zapisi-i-nesrabotka-replace.html)

kilogram 02.07.2012 17:33

Дублирование записи и несработка replace
 
Мне нужно чтобы не добавлялись идентичные 3 поля если они встретятся, а они добавляются даже если стоит первичный или уникальный ключ у меня в первом идуещм поле. Вот так вставляю и добавляется, а нужно чтобы заменялся дубликатом. Что делать? Вот так вставляю.

Код:

replace into cat (name1,surname,age) VALUES("Алина","Глушева",34)
прочитал здесь:
http://phpclub.ru/mysql/doc/replace.html


devote 02.07.2012 18:49

а какие поля у вас назначены уникальными?

kilogram 02.07.2012 19:50

Уникальными никакие, пробую добавить уникальность на все поля, пишет что дубликат вроде или что нельзя вставить.


kilogram 02.07.2012 20:16

Вот так сработало:

Код:

alter ignore table cat add UNIQUE (name1,surname,age)
Скажите, а в чем разница:
Код:

alter table cat add UNIQUE (name1,surname,age)
от этого:

Код:

alter table cat add (UNIQUE (name1,surname,age))

devote 02.07.2012 20:20

Цитата:

Сообщение от kilogram
Уникальными никакие, пробую добавить уникальность на все поля, пишет что дубликат вроде или что нельзя вставить.

вам это и не поможет, если вы все поля сделаете уникальными, тогда вы не сможете вставить например "Маша Пупкина" если у вас уже будет какая ни будь "Маша Жопкина".

Вам все же придется делать два запроса, иначе это никак не решить. Первым проверяете наличие, вторым вставляете/обновляете.

kilogram 02.07.2012 20:46

Залез в таблицу, там такое:
Код:

| cat  | CREATE TABLE `cat` (
  `number` int(11) NOT NULL AUTO_INCREMENT,
  `name1` varchar(20) DEFAULT NULL,
  `surname` char(12) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`number`),
  UNIQUE KEY `age` (`age`),
  UNIQUE KEY `name1` (`name1`,`surname`,`age`),
  UNIQUE KEY `name1_2` (`name1`,`surname`,`age`),
  UNIQUE KEY `name1_3` (`name1`,`surname`,`age`)
) ENGINE=MyISAM AUTO_INCREMENT=35 DEFAULT CHARSET=utf8 |

Хочу удалить уникальный ключ так, не хочет удаляться:
alter table cat drop UNIQUE name1

kilogram 02.07.2012 21:00

Вот так удалилось
Код:

alter table cat drop index name1
Я заметил странную вещь, если написать такой запрос:
Код:

alter ignore table cat add UNIQUE (name1,surname,age)
А потом запустить 3 раза, выходит такое в результате в таблицу.
Что это такое произошло?
Код:

UNIQUE KEY `name1` (`name1`,`surname`,`age`),
  UNIQUE KEY `name1_2` (`name1`,`surname`,`age`),
  UNIQUE KEY `name1_3` (`name1`,`surname`,`age`)



Часовой пояс GMT +3, время: 13:06.