Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Дублирование записей при INSERT'е

6.3K
19 марта 2008 года
Neutral
76 / / 13.12.2005
Извините, за возможно глупый вопрос, но уже пол часа ищу в гугле и нормального ответа не нашел. Ситуация такая: у меня есть таблица базы данных пусть например, с тремя полями: id INT AUTO_INCREMENT, name VARCHAR(80), description TEXT. Как правильно сделать что бы нельзя было добавить одинаковые записи но с разными айди. То есть, например, защитится от клавиши F5. Я понимаю что можно читать строки таблицы и сравнивать, но это как то некрасиво. Спасибо за советы.
8
19 марта 2008 года
mfender
3.5K / / 15.06.2005
База какая? Или тут телепаты все?
400
19 марта 2008 года
ArtemS2006
272 / / 12.01.2008
Цитата: Neutral
Извините, за возможно глупый вопрос, но уже пол часа ищу в гугле и нормального ответа не нашел. Ситуация такая: у меня есть таблица базы данных пусть например, с тремя полями: id INT AUTO_INCREMENT, name VARCHAR(80), description TEXT. Как правильно сделать что бы нельзя было добавить одинаковые записи но с разными айди. То есть, например, защитится от клавиши F5. Я понимаю что можно читать строки таблицы и сравнивать, но это как то некрасиво. Спасибо за советы.



q = mysql_query("select * from table where name=".$new_name);
if (mysql_numrows(q)>0) {
//такое имя уже есть
}else {
//такого имени нет
}

//йа телепат)))

353
19 марта 2008 года
Nixus
840 / / 04.01.2007
Если в mysql и без ручного сранения, то:
 
Код:
ALTER TABLE `table1` ADD UNIQUE (`name` ,`description`)
9.0K
19 марта 2008 года
Toxin_F
93 / / 03.01.2007
2 ArtemS2006
какой смысл делать выборку всех полей и потом считать строки? Абсурдный запрос.
8
19 марта 2008 года
mfender
3.5K / / 15.06.2005
Цитата: Toxin_F
2 ArtemS2006
какой смысл делать выборку всех полей и потом считать строки? Абсурдный запрос.


Это действительно неразумно. Больше подойдёт такой запрос:

SELECT COUNT(table_name.oid) AS numresult FROM table_name WHERE name = 'какойто нейм' AND description='какой-то дескрипшн'

и проверять на отличие numresult от 0 средствами PHP.

Это для mysql. Поэтому я не просто так про БД спросил. В какой-нибудь MSSQL это всё в одной конструкции средствами SQL можно сделать.

PS. Поле name лучше как-нибудь иначе называть.

6.3K
22 марта 2008 года
Neutral
76 / / 13.12.2005
Извините, что не уточнил база действительно mysql. Спасибо за ответы, вроде разобрался.
304
24 марта 2008 года
Fenyx
707 / / 26.01.2005
Цитата: Neutral
Извините, что не уточнил база действительно mysql. Спасибо за ответы, вроде разобрался.


В постгре и наскоко знаю мускул 5 можно написать триггер - это самое красивое решение

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог