![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Триггер - непонятно, для чего он. [D3, D5, IB5.x]
Fishka © (2003-02-25 16:31:00)Для таблицы создан (не мной) триггер (и не один). Его текст (и ему подобных):
CREATE TRIGGER CHECK_112 FOR SSD AFTER UPDATE POSITION 1
Для чего он нужен? Когда я пишу точно такое для таблицы в другой базе, у меня возникает ошибка типа: необходимо писать begin ... end. Почему?
Johnmen (2003-02-27 12:20:00) [1]>Fishka (27.02.03 12:03)
Я не знаю, что такое SQL Explorer и как он работает.
Может быть повторяюсь, но еще раз - забей на сист.триггеры и обращай внимание только на "свои рабочие". Как понять, какие из них какие ? См. метаданные - там только "свои рабочие".
Fishka (2003-02-27 12:03:00) [2]Sergey13 © (27.02.03 10:38)
>Слушай, а база у тебя не битая? Бэкап проходит нормально?
База живая,рабочая, ежедневно пополняется. Backup проходит ежедневно и нормально.
>А с разработчиком нельзя переговорить?
Теоретически можно, но они вряд ли вспомнят, т.к. занимаются сейчас совсем другим.
Johnmen © (27.02.03 10:59)
>А как ты видишь, что нет ?
Все также: В SQL Explorer-e жмякаю на Triggers у таблицы, получаю список триггеров. Жмякаю на триггер, смотрю его текст и вижу то, что приведено выше.
Desdechado (2003-02-27 11:01:00) [3]а еще я помню, была такая утилита, кот. выкусывала текстовые тела ХП и триггеров, оставляя в БД их откомпилированный вид. Видел, имхо, на www.ibase.ru
Johnmen (2003-02-27 10:59:00) [4]>Fishka (27.02.03 10:02)
>...т.к. в другой базе есть CONSTRAINT-ы, а подобных триггеров в ней нет...
А как ты видишь, что нет ?
>Sergey13 © (27.02.03 10:38)
>Не должно там быть таких "тригеров бестелесных",
Их и не бывает. А то, что он видит (неизвестно как) есть просто (еще раз повторю) описательные части триггеров.
Sergey13 (2003-02-27 10:38:00) [5]2Fishka (27.02.03 10:02)
Слушай, а база у тебя не битая? Бэкап проходит нормально? Не должно там быть таких "тригеров бестелесных", ИМХО. Это же мистика какая-то.
>База создана не мной,
А с разработчиком нельзя переговорить?
Fishka (2003-02-27 10:02:00) [6]Johnmen © (27.02.03 09:47)
С пунктами 2 и 3 не могу согласиться, т.к. в другой базе есть CONSTRAINT-ы, а подобных триггеров в ней нет. А у Вас есть нечто похожее (в смысле таких триггеров)?
Sergey13 © (27.02.03 09:50)
IB Manager-ом я вроде пользуюсь.
База создана не мной, но мне необходимо в ней разобраться.
Sergey13 (2003-02-27 09:50:00) [7]2Fishka (27.02.03 08:55)
Поставь себе какую нибудь нормальную прогу для работы с ИБ. Например IB Manager. Вообще непонятно как ты видишь эти свои тригеры. Если это CHECKи, то они должны быть видимы в констрейнтах(там где ключи всякие), а не в тригерах, к которым(с точки зрения пользователя) они вообще никакого отношения не имеют.
Johnmen (2003-02-27 09:47:00) [8]1. смотреть по системным таблицам, зная имя триггера и какую таблицу он обслуживает
2. в ней нет констрейнтов
3. от их наличия
Fishka (2003-02-27 09:37:00) [9]Johnmen © (27.02.03 09:29)
А как определить для какого CONSTRAINT появился автоматически данный триггер? Почему в другой базе нет подобных триггеров?
От чего это зависит?
Johnmen (2003-02-27 09:29:00) [10]>DarkGreen © (27.02.03 05:28)
Нет.
>Fishka (27.02.03 08:55)
Системные триггеры создаются автоматически (для поддержания) при
определении различного типа кострейнтов (FK, CHECK ...), явных или нет. В приведенном тобой примере мы видим описательную часть сист.триг., который реализует констрейнт типа CHECK вида CHECK (BEGIN_DATE<=END_DATE).
Fishka (2003-02-27 08:55:00) [11]Не могу понять, что это за триггер, с таким "тощим телом" или даже без него. В другой базе, где триггеры созданы мной, триггеров подобного вида нет.
Каким бы не был данный триггер (системным или нет), все-таки для чего он и каким образом создан?
DarkGreen (2003-02-27 05:28:00) [12]2 Johnmen © (26.02.03 17:05)
ИМХО системные триггеры начинаются с RDB$
Johnmen (2003-02-26 17:05:00) [13]Правильно, нет. Так как этот триггер системный. А системные триггеры трогать категорически не рекомендуется !
Fishka (2003-02-26 16:59:00) [14]Johnmen © (26.02.03 15:58)
Спасибо. Но данного триггера среди триггеров и Check-ов там нет. Что делать?
Вопрос остается...............
Johnmen (2003-02-26 15:58:00) [15]Запускаешь isql и там в меню находишь нужное...
Fishka (2003-02-26 15:51:00) [16]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
какое ограничение и на какие поля наложено?
Desdechado (2003-02-26 14:13:00) [17]в IB все CHECK-CONSTRAINT"ы реализованы через триггеры, поэтому когда ты добавляешь check на поле таблицы или комбинацию полей, IB создает такой вот триггер CHECK_XXX.
Johnmen (2003-02-26 11:10:00) [18]Похоже ты видишь описательную часть системных триггеров...
Получи метеданные всей базы и глянь триггеры там...
Fishka (2003-02-26 11:05:00) [19]В SQL Explorer-e жмякаю на Triggers у таблицы, получаю список триггеров. Жмякаю на триггер, смотрю его текст и вижу то, что приведено выше.
Johnmen (2003-02-26 11:00:00) [20]Начнем сначала...
Каким образом получена информация о триггерах ?