Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.07.2012, 17:33
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 19.03.2012
Сообщений: 163

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

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

Ответить с цитированием
  #2 (permalink)  
Старый 02.07.2012, 18:49
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

а какие поля у вас назначены уникальными?
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 02.07.2012, 19:50
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 19.03.2012
Сообщений: 163

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

Ответить с цитированием
  #4 (permalink)  
Старый 02.07.2012, 20:16
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 19.03.2012
Сообщений: 163

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

Код:
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))
Ответить с цитированием
  #5 (permalink)  
Старый 02.07.2012, 20:20
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

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

Вам все же придется делать два запроса, иначе это никак не решить. Первым проверяете наличие, вторым вставляете/обновляете.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #6 (permalink)  
Старый 02.07.2012, 20:46
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 19.03.2012
Сообщений: 163

Залез в таблицу, там такое:
Код:
| 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
Ответить с цитированием
  #7 (permalink)  
Старый 02.07.2012, 21:00
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 19.03.2012
Сообщений: 163

Вот так удалилось
Код:
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`)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод replace cyber Events/DOM/Window 20 07.05.2012 00:38
Помогите с replace! faforty Общие вопросы Javascript 2 28.08.2011 13:10