Форум: "Базы";
Текущий архив: 2003.03.20;
Скачать: [xml.tar.bz2];
ВнизТриггер - непонятно, для чего он. Найти похожие ветки
← →
Fishka (2003-02-25 16:31) [0]Для таблицы создан (не мной) триггер (и не один). Его текст (и ему подобных):
CREATE TRIGGER CHECK_112 FOR SSD AFTER UPDATE POSITION 1
Для чего он нужен? Когда я пишу точно такое для таблицы в другой базе, у меня возникает ошибка типа: необходимо писать begin ... end. Почему?
← →
Johnmen (2003-02-25 16:37) [1]см. Прилагающуюся к IB документацию по SQL : CREATE TRIGGER
← →
Fishka (2003-02-25 16:52) [2]Мною написано несколько триггеров к другой таблице. Например, самый простой (остальные с Exists и т.п.):
CREATE TRIGGER CHECK_14 FOR ALTIMETRY BEFORE UPDATE POSITION 0 CHECK (BEGIN_DATE<=END_DATE)
Вопросы по данному триггеру остаются.......
← →
Johnmen (2003-02-25 17:01) [3]Ну божешь ты мой !... :)))
Время и желание постить сюда есть, а глянуть в доку - нет !
← →
DarkKnight (2003-02-25 18:13) [4]CHECK_XXX - ограничение для поля таблицы, т.е. не совсем триггер ;)
Кстати, свои триггера CHECK_XXX называть не рекомендуется - могут быть грабли при изменении/удалении. В новых версия FB/IB их создание могут вообще запретить.
← →
Sergey13 (2003-02-26 09:48) [5]>Триггер - непонятно, для чего он.
Не заморачивайся. Это буржуи придумали для наших программистов, не читающих книжки, чтоб запутать все окончательно. 8-)
← →
Fishka (2003-02-26 09:55) [6]Johnmen © (25.02.03 17:01)
В книге Ковязина есть немного о триггерах, но к понять данный триггер я все равно не могу. Примеры триггеров из этой книги понятны.
DarkKnight (25.02.03 18:13)
Спасибо, учту.
CREATE TRIGGER CHECK_112 FOR SSD AFTER UPDATE POSITION 1
Вопрос остается. Что должно делаться в таблице после изменения? Для чего данный триггер?
← →
Johnmen (2003-02-26 10:11) [7]>Fishka
Где тело триггера ?
← →
Fishka (2003-02-26 10:17) [8]Уже написано тело триггера (оно очень худое). Но повторю еще раз:
CREATE TRIGGER CHECK_112 FOR SSD AFTER UPDATE POSITION 1
И это все о нем........
← →
Johnmen (2003-02-26 10:21) [9]Тела не видно ! :)
Оно расположено между begin и end.
← →
Fishka (2003-02-26 10:42) [10]В базе много триггеров. Есть с begin и end, но есть и такого типа (тоже их много). Можете еще раз перечитать мой вопрос, там я тоже интересуюсь, где begin и end в данном триггере.
Повторяю:
CREATE TRIGGER CHECK_112 FOR SSD AFTER UPDATE POSITION 1
Каким образом были созданы эти триггеры и для чего?
← →
Johnmen (2003-02-26 11:00) [11]Начнем сначала...
Каким образом получена информация о триггерах ?
← →
Fishka (2003-02-26 11:05) [12]В SQL Explorer-e жмякаю на Triggers у таблицы, получаю список триггеров. Жмякаю на триггер, смотрю его текст и вижу то, что приведено выше.
← →
Johnmen (2003-02-26 11:10) [13]Похоже ты видишь описательную часть системных триггеров...
Получи метеданные всей базы и глянь триггеры там...
← →
Desdechado (2003-02-26 14:13) [14]в IB все CHECK-CONSTRAINT"ы реализованы через триггеры, поэтому когда ты добавляешь check на поле таблицы или комбинацию полей, IB создает такой вот триггер CHECK_XXX.
← →
Fishka (2003-02-26 15:51) [15]Johnmen © (26.02.03 11:10)
Не помню, как в IB 5.0 получить метаданные. Подскажите, пожалуйста.(IB 6.0 и прочих у меня нет!)
Desdechado © (26.02.03 14:13)
Например, в приводимом мною триггере:
CREATE TRIGGER CHECK_14 FOR ALTIMETRY BEFORE UPDATE POSITION 0 CHECK (BEGIN_DATE<=END_DATE)
наложено ограничение на поля BEGIN_DATE,END_DATE.
А в том триггере, о котором я спрашиваю:
CREATE TRIGGER CHECK_112 FOR SSD AFTER UPDATE POSITION 1
какое ограничение и на какие поля наложено?
← →
Johnmen (2003-02-26 15:58) [16]Запускаешь isql и там в меню находишь нужное...
← →
Fishka (2003-02-26 16:59) [17]Johnmen © (26.02.03 15:58)
Спасибо. Но данного триггера среди триггеров и Check-ов там нет. Что делать?
Вопрос остается...............
← →
Johnmen (2003-02-26 17:05) [18]Правильно, нет. Так как этот триггер системный. А системные триггеры трогать категорически не рекомендуется !
← →
DarkGreen (2003-02-27 05:28) [19]2 Johnmen © (26.02.03 17:05)
ИМХО системные триггеры начинаются с RDB$
← →
Fishka (2003-02-27 08:55) [20]Не могу понять, что это за триггер, с таким "тощим телом" или даже без него. В другой базе, где триггеры созданы мной, триггеров подобного вида нет.
Каким бы не был данный триггер (системным или нет), все-таки для чего он и каким образом создан?
← →
Johnmen (2003-02-27 09:29) [21]>DarkGreen © (27.02.03 05:28)
Нет.
>Fishka (27.02.03 08:55)
Системные триггеры создаются автоматически (для поддержания) при
определении различного типа кострейнтов (FK, CHECK ...), явных или нет. В приведенном тобой примере мы видим описательную часть сист.триг., который реализует констрейнт типа CHECK вида CHECK (BEGIN_DATE<=END_DATE).
← →
Fishka (2003-02-27 09:37) [22]Johnmen © (27.02.03 09:29)
А как определить для какого CONSTRAINT появился автоматически данный триггер? Почему в другой базе нет подобных триггеров?
От чего это зависит?
← →
Johnmen (2003-02-27 09:47) [23]1. смотреть по системным таблицам, зная имя триггера и какую таблицу он обслуживает
2. в ней нет констрейнтов
3. от их наличия
← →
Sergey13 (2003-02-27 09:50) [24]2Fishka (27.02.03 08:55)
Поставь себе какую нибудь нормальную прогу для работы с ИБ. Например IB Manager. Вообще непонятно как ты видишь эти свои тригеры. Если это CHECKи, то они должны быть видимы в констрейнтах(там где ключи всякие), а не в тригерах, к которым(с точки зрения пользователя) они вообще никакого отношения не имеют.
← →
Fishka (2003-02-27 10:02) [25]Johnmen © (27.02.03 09:47)
С пунктами 2 и 3 не могу согласиться, т.к. в другой базе есть CONSTRAINT-ы, а подобных триггеров в ней нет. А у Вас есть нечто похожее (в смысле таких триггеров)?
Sergey13 © (27.02.03 09:50)
IB Manager-ом я вроде пользуюсь.
База создана не мной, но мне необходимо в ней разобраться.
← →
Sergey13 (2003-02-27 10:38) [26]2Fishka (27.02.03 10:02)
Слушай, а база у тебя не битая? Бэкап проходит нормально? Не должно там быть таких "тригеров бестелесных", ИМХО. Это же мистика какая-то.
>База создана не мной,
А с разработчиком нельзя переговорить?
← →
Johnmen (2003-02-27 10:59) [27]>Fishka (27.02.03 10:02)
>...т.к. в другой базе есть CONSTRAINT-ы, а подобных триггеров в ней нет...
А как ты видишь, что нет ?
>Sergey13 © (27.02.03 10:38)
>Не должно там быть таких "тригеров бестелесных",
Их и не бывает. А то, что он видит (неизвестно как) есть просто (еще раз повторю) описательные части триггеров.
← →
Desdechado (2003-02-27 11:01) [28]а еще я помню, была такая утилита, кот. выкусывала текстовые тела ХП и триггеров, оставляя в БД их откомпилированный вид. Видел, имхо, на www.ibase.ru
← →
Fishka (2003-02-27 12:03) [29]Sergey13 © (27.02.03 10:38)
>Слушай, а база у тебя не битая? Бэкап проходит нормально?
База живая,рабочая, ежедневно пополняется. Backup проходит ежедневно и нормально.
>А с разработчиком нельзя переговорить?
Теоретически можно, но они вряд ли вспомнят, т.к. занимаются сейчас совсем другим.
Johnmen © (27.02.03 10:59)
>А как ты видишь, что нет ?
Все также: В SQL Explorer-e жмякаю на Triggers у таблицы, получаю список триггеров. Жмякаю на триггер, смотрю его текст и вижу то, что приведено выше.
← →
Johnmen (2003-02-27 12:20) [30]>Fishka (27.02.03 12:03)
Я не знаю, что такое SQL Explorer и как он работает.
Может быть повторяюсь, но еще раз - забей на сист.триггеры и обращай внимание только на "свои рабочие". Как понять, какие из них какие ? См. метаданные - там только "свои рабочие".
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.03.20;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.008 c