Дублирование записей при INSERT'е
Извините, за возможно глупый вопрос, но уже пол часа ищу в гугле и нормального ответа не нашел. Ситуация такая: у меня есть таблица базы данных пусть например, с тремя полями: id INT AUTO_INCREMENT, name VARCHAR(80), description TEXT. Как правильно сделать что бы нельзя было добавить одинаковые записи но с разными айди. То есть, например, защитится от клавиши F5. Я понимаю что можно читать строки таблицы и сравнивать, но это как то некрасиво. Спасибо за советы.
База какая? Или тут телепаты все?
Цитата: 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 {
//такого имени нет
}
//йа телепат)))
Код:
ALTER TABLE `table1` ADD UNIQUE (`name` ,`description`)
какой смысл делать выборку всех полей и потом считать строки? Абсурдный запрос.
Цитата: 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 лучше как-нибудь иначе называть.
Извините, что не уточнил база действительно mysql. Спасибо за ответы, вроде разобрался.
Цитата: Neutral
Извините, что не уточнил база действительно mysql. Спасибо за ответы, вроде разобрался.
В постгре и наскоко знаю мускул 5 можно написать триггер - это самое красивое решение