Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Дублирование записи и несработка replace 
:(
    Опции темы
kilogram
Дата 2.7.2012, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 19.3.2012

Репутация: 1
Всего: 0



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

Код

 replace into cat (name1,surname,age) VALUES("Алина","Глушева",34)


прочитал здесь:
http://phpclub.ru/mysql/doc/replace.html

user posted image
PM MAIL   Вверх
Сумасшедший
Дата 2.7.2012, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чилавек-Каропка
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 15.8.2004
Где: Москва

Репутация: 4
Всего: 107



Код

SHOW CREATE TABLE `cat`;



--------------------
Однажды ты спросишь, а я отвечу: "Время ожидания специалиста - 10 минут". Ты бросишь трубку, так и не узнав, что Ваш звонок очень важен для нас!
PM MAIL WWW Jabber   Вверх
kilogram
Дата 2.7.2012, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 19.3.2012

Репутация: 1
Всего: 0



Код

mysql> show create table test.cat;
+-------+--------------------------------------------------------------------
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
-------------------------+
| Table | Create Table



                         |
+-------+--------------------------------------------------------------------
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
-------------------------+
| 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 `number_2` (`number`),
  KEY `number` (`number`),
  KEY `clown` (`number`)
) ENGINE=MyISAM AUTO_INCREMENT=29 DEFAULT CHARSET=utf8 |
+-------+--------------------------------------------------------------------
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
-----------------------------------------------------------------------------
-------------------------+
1 row in set (0.02 sec)

PM MAIL   Вверх
Сумасшедший
Дата 2.7.2012, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чилавек-Каропка
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 15.8.2004
Где: Москва

Репутация: 4
Всего: 107



Из приведённой Вами же ссылки:
Цитата

Следует учитывать, что, если не используются индексы UNIQUE или PRIMARY KEY, то применение команды REPLACE не имеет смысла, так как она работает просто как INSERT.

А у Вас unique и primary - number


--------------------
Однажды ты спросишь, а я отвечу: "Время ожидания специалиста - 10 минут". Ты бросишь трубку, так и не узнав, что Ваш звонок очень важен для нас!
PM MAIL WWW Jabber   Вверх
kilogram
Дата 2.7.2012, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 19.3.2012

Репутация: 1
Всего: 0



То есть нужно добавить уникальный ключ для каждого поля или первичный?
Пробую так, не добавляется:
Код
alter table cat add(UNIQUE(surname,age))

PM MAIL   Вверх
Akina
Дата 2.7.2012, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Вот интересно - а с какой целью сделаны аж ЧЕТЫРЕ копии одного и того же индекса?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kilogram
Дата 2.7.2012, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 19.3.2012

Репутация: 1
Всего: 0



Цитата(Akina @  2.7.2012,  17:08 Найти цитируемый пост)
Вот интересно - а с какой целью сделаны аж ЧЕТЫРЕ копии одного и того же индекса?


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

PM MAIL   Вверх
kilogram
Дата 2.7.2012, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 19.3.2012

Репутация: 1
Всего: 0



Попробовал поудалять индексы, сейчас таблица такая у меня:
Код

| 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`)
) ENGINE=MyISAM AUTO_INCREMENT=32 DEFAULT CHARSET=utf8 |


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

user posted image
PM MAIL   Вверх
Сумасшедший
Дата 2.7.2012, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чилавек-Каропка
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 15.8.2004
Где: Москва

Репутация: 4
Всего: 107



Почему?


--------------------
Однажды ты спросишь, а я отвечу: "Время ожидания специалиста - 10 минут". Ты бросишь трубку, так и не узнав, что Ваш звонок очень важен для нас!
PM MAIL WWW Jabber   Вверх
kilogram
Дата 2.7.2012, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 19.3.2012

Репутация: 1
Всего: 0



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

Код
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))

PM MAIL   Вверх
Akina
Дата 2.7.2012, 19:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(kilogram @  2.7.2012,  19:53 Найти цитируемый пост)
пробую добавить уникальность на все поля, пишет что дубликат вроде или что нельзя вставить.

Нет, тебе пишут, что надо соблюдать синтаксис. Намекая, что неплохо бы почитать документацию.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
kilogram
Дата 2.7.2012, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 19.3.2012

Репутация: 1
Всего: 0



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

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`)

PM MAIL   Вверх
Akina
Дата 2.7.2012, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Повторю...
Цитата(Akina @  2.7.2012,  20:18 Найти цитируемый пост)
неплохо бы почитать документацию.




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0548 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.