Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2012, 17:38   #1
kilogram
Форумчанин
 
Регистрация: 04.03.2012
Сообщений: 144
По умолчанию Дублирование записи и несработка replace

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

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

kilogram вне форума Ответить с цитированием
Старый 02.07.2012, 18:51   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
INSERT into cat (name1,surname,age) VALUES("Алина","Глушева",34)
WHERE NOT EXISTS(SELECT * FROM cat С WHERE С.name1="Алина" AND C.surname="Глушева" AND C.age=34)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.07.2012, 20:17   #3
kilogram
Форумчанин
 
Регистрация: 04.03.2012
Сообщений: 144
По умолчанию

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

Код:
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))
kilogram вне форума Ответить с цитированием
Старый 02.07.2012, 20:46   #4
kilogram
Форумчанин
 
Регистрация: 04.03.2012
Сообщений: 144
По умолчанию

Залез в таблицу, там такое:
Код:
| 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, 20:59   #5
kilogram
Форумчанин
 
Регистрация: 04.03.2012
Сообщений: 144
По умолчанию

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


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непонятное дублирование записи. celovec Общие вопросы Delphi 1 10.06.2012 16:52
Replace KuckaMAXHATKA Общие вопросы C/C++ 5 05.12.2011 18:31
string::replace WebbMan Общие вопросы C/C++ 4 28.06.2011 15:31
Функцию .replace из Javascript в Delphi designer999 Общие вопросы Delphi 0 12.06.2011 21:30
Проблема с функцией Replace... Oooleg Microsoft Office Excel 7 02.09.2009 05:22