Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день, подскажите пожалуйста. Предположим у меня есть форма из 10 полей. Есть таблица мускул из 11 столбцов (10 как в форме+1 id PK auto_increment). Нужно сделать так, чтобы ещё в определённом столбце VARCHAR не повторялись значения. Как это лучше реализовать? Посредством PHP или каким-то запросом в базе MySQL?
Неактивен
1. Создать уникальный ключ по этому полю.
2. Перед вставкой данных в БД проверять, не присутствует ли в этом поле такое же значение.
Неактивен
Neval написал:
1. Создать уникальный ключ по этому полю.
2. Перед вставкой данных в БД проверять, не присутствует ли в этом поле такое же значение.
А зачем ещё и уникальный ключ создавать? Оо
Если перед вставкой посредством РНР проверять, то вообще с БД ничё делать не надо. Я думал может БД сама может проверить есть ли идентичное значение в столбце... и вывести что-нить (например ошибку).
Неактивен
Тут зависит от того, на кого Вы хотите эту проверку повесить - или на бизнес-логику.
Если на базу - то создайте уникальный индекс. В этом случае, если Вы не хотите, чтобы mysql-сервер вернул ошибку - проверяйте перед вставкой сами. Или же не проверяйте, в этом случае mysql-сервер выругается.
А можно базу и не нагружать этим, а проверять на уровне бизнес-логики перед вставкой/обновлением.
Можно и просто в insert-запросе сделать проверку на наличие такого значения в базе, правда запрос довольно-таки длинный получается .
Неактивен
Dezmont написал:
А зачем ещё и уникальный ключ создавать? Оо
Нельзя быть уверенным на 100%, что не произойдёт чего-то не ожиданного. Добавленная по ошибке дублирующая запись может сильно вылезти боком, по сему лучше всего перестраховаться на уровне БД.
Dezmont написал:
Если перед вставкой посредством РНР проверять, то вообще с БД ничё делать не надо. Я думал может БД сама может проверить есть ли идентичное значение в столбце... и вывести что-нить (например ошибку).
Она сама может, но либо она вернёт ошибку, которую надо будет ещё правильно обработать, либо она ничего не вернёт (при INSERT IGNORE), но при этом и не добавит запись, о чём Вы не сможете узнать без дополнительной проверки.
Неактивен
Neval написал:
Нельзя быть уверенным на 100%, что не произойдёт чего-то не ожиданного. Добавленная по ошибке дублирующая запись может сильно вылезти боком, по сему лучше всего перестраховаться на уровне БД.
)) Очень интересное заключение... :DDD
Я для того и проверяю, чтобы на 100% быть увереным, что дублирующая запись не добавится.
Ясно. Средствами PHP тогда просто проверю.
Отредактированно Dezmont (01.12.2011 15:32:59)
Неактивен
Dezmont написал:
)) Очень интересное заключение... :DDD
На самом деле это реалии жизни и многолетняя практика Будете потом щи лаптем хлебать
Дело Ваше, варианты у Вас есть
Неактивен