Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте.
Возможно ли создать нéкую маску ввода для определенного столбика?
Например, пользователи при регистрации должны указать код своей учебной группы, 2290КИ или 2110ФИ... , т.е. только 4 цифры и только две буквы.
Другими словами, MySQL не должна принимать AB1234 или 12345ФА или 1234ИАВ и т.д.
Заранее спасибо.
Отредактированно warma2d (02.11.2012 19:57:30)
Неактивен
Можно, например, триггер before insert, в результате действия которого запись не будет добавлена.
Но вам ведь нужно другое - чтобы пользователь при неправильном коде группы получил сообщение об ошибке и регистрация не прошла, а это нужно программировать на клиенте.
Неактивен
В ряде СУБД есть приятная возможность добавлять CHECK CONSTRAINT - с определенных позиций это лучше триггера - тоже помогло бы топикстартеру, но вот, к сожалению, не торопятся разработчики MySQL реализовать это полноценно. Да и Монти (лидер MariaDB), только на него надежда и оставалась, тоже не спешит ( Unfortunately, at the moment we don't have any immediate plans of implementing CHECK constraints. ) .
Неактивен
Вопрос практически такой же как у автора темы. Есть таблица new в ней есть столбец new1. Необходимо сделать ограничение на ввод данных в ячейки столбца new1, формат ввода следующий 2 цифры и 1 буква (пример: 11ф, 11а, 42г, и т.д.). Реализовать надо с помощью триггера. Нужно когда ввод данных в ячейку не соответствует заданному формату выдавалось сообщение об ошибке или хотя бы просто запретить всякий ввод не соответствующий заданному формату. Прошу помощи светлые головы.
Отредактированно PYMblH (30.11.2012 11:53:19)
Неактивен
Предыдущие ответы все ещё актуальны. С помощью триггера вы сможете лишь отменить вставку, но пользователь об этом не узнает.
Если вам этого достаточно, то http://dev.mysql.com/doc/refman/5.5/en/regexp.html
Неактивен
vasya написал:
Предыдущие ответы все ещё актуальны. С помощью триггера вы сможете лишь отменить вставку, но пользователь об этом не узнает.
Если вам этого достаточно, то http://dev.mysql.com/doc/refman/5.5/en/regexp.html
Уважаемый vasya, не могли бы мне в коде показать хоть примерно как должно выглядеть в английском не слишком силен?
Неактивен
SELECT new.new1 regexp '^[[:digit:]]{2}[[:alpha:]]{1}$'; -- вернет 1, если формат ввода две цифры и одна буква, иначе вернет 0.
Неактивен
deadka написал:
В ряде СУБД есть приятная возможность добавлять CHECK CONSTRAINT - с определенных позиций это лучше триггера - тоже помогло бы топикстартеру, но вот, к сожалению, не торопятся разработчики MySQL реализовать это полноценно. Да и Монти (лидер MariaDB), только на него надежда и оставалась, тоже не спешит ( Unfortunately, at the moment we don't have any immediate plans of implementing CHECK constraints. ) .
И правильно делают, что не торопятся. Во-первых какой-никакой инструмент уже есть (триггеры), а во-вторых все таки валидация данных - это задача приложения, а не СУБД. А то так скоро от mysql захотят чтобы она формочки на странице рисовала сама ))
Лучше бы PCRE имплементировали вместо существующего огрызка регулярок )
Неактивен
Не, неправильно делают, пусть лучше торопятся! Триггеры - всё же несколько другое, хотя механизм и схож. Что до валидации данных - констрэйнты дают возможность фильтровать данные на входе - чтобы потом не мучиться и по крону не запускать какие-то скрипты ночью, которые будут валидировать данные. Представь себе (абсолютно реальную, к слову) ситуацию - когда в одну и ту же базу в одни и те же таблицы пишет c++-демон и веб-приложение. Придётся делать две разных валидации данных или как-то сильно извращаться. А так констрэйнт втыкаешь на табличку - и вуаля.
Что до формочек - ну вот Оракул, похоже, пошёл по этому пути, я видел OracleForms .
Лучше бы PCRE имплементировали вместо существующего огрызка регулярок )
+1
Неактивен