Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Триггер - непонятно, для чего он. [D3, D5, IB5.x]


Страницы:   1 2

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]

Начнем сначала...
Каким образом получена информация о триггерах ?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо