powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / 1 check constraint -> 2 trigger`a
5 сообщений из 5, страница 1 из 1
1 check constraint -> 2 trigger`a
    #32459688
Фотография oz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача - вытянуть DDL на создание CHECK constraints. Использую запрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT
   r.rdb$relation_name    "TABLE_NAME" ,
   r.RDB$CONSTRAINT_NAME  "NAME" ,
   t.rdb$trigger_source    "CODE" 
FROM
   rdb$relation_constraints r
   JOIN rdb$check_constraints cc ON (r.RDB$CONSTRAINT_NAME=cc.rdb$constraint_name)
   JOIN rdb$triggers t ON (cc.rdb$trigger_name=t.rdb$trigger_name)
WHERE
   r.RDB$CONSTRAINT_TYPE = 'CHECK'
ORDER BY
   r.rdb$relation_name

в выходном наборе каждая запись продублирована. Посмотрел на таблицу RDB$CHECK_CONSTRAINTS - действительно, каждому значению RDB$CONSTRAINT_NAME соответствует 2 записи, причем ссылаются они на триггеры, которые отличаются только значением поля RDB$TRIGGER_TYPE (таблица RDB$TRIGGERS) - значения 1 и 3. Я могу конечно переписать запрос и в нем вытягивать только те записи, которые ссылаются на триггер с типом 1 (например), но не хочу делать это слепо. Кто - нить знает, что это за типчик такой?
...
Рейтинг: 0 / 0
1 check constraint -> 2 trigger`a
    #32460212
Фотография Johnmen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
 1   BEFORE INSERT  PRE_STORE 
 2   AFTER INSERT  POST_STORE 
 3   BEFORE UPDATE  PRE_MODIFY 
 4   AFTER UPDATE  POST_MODIFY 
 5   BEFORE DELETE  PRE_ERASE 
 6   AFTER DELETE  POST_ERASE 
...
Рейтинг: 0 / 0
1 check constraint -> 2 trigger`a
    #32460241
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда ты создаёшь CHECK CONSTRAINT, то сервер для поддержания оной, создаёт два триггера (системных). Один на PRE_STORE (RDB$TRIGGER_TYPE = 1), другой на PRE_MODIFY (RDB$TRIGGER_TYPE = 3). Они соответствуют событиям BEFORE INSERT и BEFORE UPDATE соответственно.
...
Рейтинг: 0 / 0
1 check constraint -> 2 trigger`a
    #32460873
Фотография oz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кул, спасибо. Если можно, ссылку, по которой можно это почитать. Может там еще чего умного написано?
...
Рейтинг: 0 / 0
1 check constraint -> 2 trigger`a
    #32460888
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
news://news.demo.ru/epsylon.public.interbase
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / 1 check constraint -> 2 trigger`a
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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