powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Неоднозначность CHECK в Interbase 7
5 сообщений из 5, страница 1 из 1
Неоднозначность CHECK в Interbase 7
    #32594339
serge_mx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странное дело. Как известно при создании ограничения CHECK на значение какого-либо поля для таблицы создаются два системных триггера BEFORE INSERT и BEFORE UPDATE. Но можно создать и свой триггер BEFORE INSERT, который при добавлении записи будет задавать значение этого поля (самый простой пример – автоинкрементный ключ). Так вот, возможна ситуация, когда сначала создается ограничение, а потом мой триггер. Получаем в итоге два триггера, причем триггер для проверки ограничения будет выполняться раньше, чем мой. В IB7 это приводит к возникновению исключения при попытке вставить запись со значением, не удовлетворяющим условию CHECK (хотя в моем триггере значению устанавливается правильно). Если же сначала создать свой триггер, а потом ограничение CHECK, то все проходит без ошибок. В IB5 все работает как надо в любом случае, к чему такая неоднозначность в седьмом (кстати и в шестом)?
...
Рейтинг: 0 / 0
Неоднозначность CHECK в Interbase 7
    #32594441
Winni-Pooh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По-моему, так и должно быть. Ведь CHECK это ограничение на значения самого столбца, поэтому должно иметь самый высокий приоритет. Если у тебя бывают конфликты значений, то может быть ты неправильно определил для себя CHECK?
...
Рейтинг: 0 / 0
Неоднозначность CHECK в Interbase 7
    #32594911
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winni-PoohПо-моему, так и должно быть. Ведь CHECK это ограничение на значения самого столбца, поэтому должно иметь самый высокий приоритет. Если у тебя бывают конфликты значений, то может быть ты неправильно определил для себя CHECK?
Ч...
Чепуха.
Поразмышляй по аналогии с NOT NULL и триггером BEFORE INSERT.
...
Рейтинг: 0 / 0
Неоднозначность CHECK в Interbase 7
    #32595334
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помнится была бага, исправленная в FB1, относительно того, что триггеры для CHECK в IB6 создавались на BEFORE, а не AFTER. Я не использовал IB старше шестого, но как-то не вериться что борланды не исправили это у себя до сих пор...
...
Рейтинг: 0 / 0
Неоднозначность CHECK в Interbase 7
    #32596413
serge_mx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вообще-то CHECK - ограничение на наличие правильных данных в таблице, а триггер BEFORE выполняется, понятное дело, перед всавкой/изменениями, по логике вещей значение в этот момент еще не вставлено/изменено и проверять его CHECK как-то нелогично.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Неоднозначность CHECK в Interbase 7
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]