Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: кто и когда включает выполнение trigger  (Прочитано 23592 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« : 11-04-2008 09:37 » 

Господа,

просьба за вопрос ногами не бить Ага
Есть база sybase (уже действующая, мне надо внести изменения в связи с новыми данными). В частности, для определенных операций надо установить триггеры.

В пакете (уже существующем) я вижу скрипты для триггеров, но никак не могу понять, кто и когда включает эти триггеры!
Начала искать в инете - всюду описана функция создания триггера, но как он включается - нигде не найду...

Может кто-то может объяснить мне этот механизм?
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 11-04-2008 09:45 » 

попробуй

alter trigger имя_триггера active;

а вырубить - inactive
Записан

PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #2 : 11-04-2008 09:56 » 

обычно триггер вешается на событие... например, на вставку новой записи в таблицу... то есть когда запись вставится тогда триггер и вызовется.

Например:

CREATE TRIGGER check_birth_date -- название
    AFTER INSERT ON Employee -- на какое событие: после вставки (после commit) в таблицу Employee
REFERENCING NEW AS new_employee -- структура со вставляемыми значениями new_employee
FOR EACH ROW .... -- вызывать скрипт для каждой втавляемой записи


-------
CREATE TRIGGER mytrigger BEFORE INSERT ON Employee  -- вызывать скрипт при вставке записи в таблицу Employee до COMMIT;

---
Когда будет вызываться такой думаю уже догадаешься сама
CREATE TRIGGER mytrigger AFTER UPDATE ON employee
REFERENCING NEW AS table_after_update
            OLD AS table_before_update
FOR EACH STATEMENT
« Последнее редактирование: 11-04-2008 10:03 от PooH » Записан

Удачного всем кодинга! -=x[PooH]x=-
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #3 : 11-04-2008 10:16 » 

POOH,

а откуда база данных знает о существовании триггера на это событие?

Леш,
я еще до этой стадии не дошла Ага Мне бы понять, как все это хозяйство взаимосвязано...
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 11-04-2008 10:22 » 

Ирин, база просто знает , когда там создали триггер и связали его с событием . И он, собако, по событию и срабатывает. Я сам недавно стал пользоваться - очень удобно, только иногда могут и помешать, тогда отключение на время рулит
Записан

PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #5 : 11-04-2008 10:22 » 

ну... знает она... обязательно есть связь триггера с таблицей... это связь хранится обычно в системных таблицах.
а зачем тебе знать откуда она знает - что тебе в итоге надо получить?

---
насколько я понимаю у тебя в пакете хранятся скрипты которые вызываются из триггеров
Записан

Удачного всем кодинга! -=x[PooH]x=-
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #6 : 11-04-2008 10:56 » new

Леш, POOH,

сейчас попытаюсь объяснить, почему хочу все знать Ага
Я вижу следующее:
есть проектная папка, в которой есть
1) подраздел с sql-скриптами (для таблиц, views, процедур, триггеров).
2) подраздел с проектиком, в котором программно осуществляется связь с базой и вызов процедур и вьюшек (через SQLAllocHandle, SQLBindParameter и т.д.)

Т.е. я вижу, как программно вызываются процедуры и вьюшки, но как к базе подвешиваются триггеры??? Должна же база знать о том, что этот самый триггер существует!!!

Ладно, sybase я вижу вперыве в жизни. И где и что там находится, понятия не имею.
Решила подойти к вопросу творчески! И полезла в родной access, НО и там не поняла, куда и как этот самый триггер создать... Т.е. я вижу возможности для создания всяких select, view, модулей на бейсике. И все...

Т.е. я пока саму схему связи не пойму...
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #7 : 11-04-2008 11:10 » 

Ирин, если триггер уже есть - загляни средством редактирования базы и посморти список триггеров, которые создали до тебя Улыбаюсь
Их можно программно менять, удалять, делать свои - через

create trigger и
alter trigger
Записан

PooH
Глобальный модератор

ru
Offline Offline
Пол: Мужской
... и можно без хлеба!


« Ответ #8 : 11-04-2008 11:41 » 

вот про access: http://office.microsoft.com/en-us/access/HP030854151033.aspx
Цитата
но как к базе подвешиваются триггеры???
точно также как и создается сама база, вот ты как таблицы создаешь? CREATE TABLE... также и CREATE TRIGGER... триггер это отдельный объект БД связанный с таблицей... условно говоря СУБД при каждом действие с данными таблицы проверяет какие триггеры относятся к этим действиям и вызывает скрипт триггера.
Записан

Удачного всем кодинга! -=x[PooH]x=-
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #9 : 11-04-2008 11:50 » 

Леш,

я нашла тут какой-то скрипт, который что-то вносит в базу, только мне пока неясно, где же находится весь список триггеров. Но это я еще поищу.
Но я уже хочу хоть для себя найти - как в аксессе создать этот тарара триггер! Ага Ведь создание sql-скрипта где-то вне базы еще не решает проблему - база должна как-то узнать о существовании этого самого триггера!

Я попробовала написать create trigger ... в sql-редакторе и сохранить. Щас! Мне выдало ошибку, бо редактор уверен в том, что я хочу создать таблицу!

Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #10 : 11-04-2008 11:51 » 

POOH,

пардон, пока отправила ответ, приахло твое сообщение.
Спасибочки! Сейчас посмотрю!
Похоже, у меня уже в голове что-то заело на эту тему Ага
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #11 : 11-04-2008 14:00 » 

Я попробовала написать create trigger ...

а покажи полностью строчку ?
Записан

Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #12 : 14-04-2008 12:24 » 

Леш,

во-первых, пардон за несвоевременный ответ.

Далее по сути - я тупо скопировала уже готовое из скрипта в проекте (чтобы быстрее было и без ошибок Ага А перед этим создала в аксессе одну табличку с двумя полями).
Но дело в том, что я пыталась это написать во вкладке "запросы" (мож, я неправа с переводом - смысл в том, что тут задаются все селекты).
Судя по всему, при попытке выполнить или сохранить написанное выполняется проверка на соответствие скрипта теме. Ну а так как тема не та - он и возмущается аки упертый осел Ага

Тут меня пока от этой темы оторвали и на другую амбразуру кинули, изверги. Как только вернусь из этой темы (надеюсь, что через пару часов это произойдет), займусь триггерами дальше.
Самое обидное - линк, который дал мне Пух, для офиса2003, а у меня, как выяснилось, на компе 2000... Так что сначала буду искать, как эта фигня реализована в 2000.

Кстати, еще вопросик: а как ты дебагишь это дело? Т.е. надо же как-то проверить работоспособность? Просто задаешь разные варианты insert/delete-запросов и смотришь на результаты?
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 14-04-2008 12:50 » 

Кстати, еще вопросик: а как ты дебагишь это дело? Т.е. надо же как-то проверить работоспособность? Просто задаешь разные варианты insert/delete-запросов и смотришь на результаты?
Да-да - ходовой метод. Естественно, сперва на тестовых таблицах, а потом уже на реалке.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #14 : 14-04-2008 15:17 » 

Ром,

спасибочки за ответ! Я вообще сначала хочу увидеть, что это чудо будет вытворять в случае ошибки! Надо ж лазутчика в лицо знать! Ага
А точнее, база данных, как и восток, дело тонкое, надо хоть понимать, что от нее требуешь. Ага
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 14-04-2008 17:12 » 

Malaja, саму процедуру можно сперва отладить как PROCEDURE - так легче вызывать, а потом уже подгонять под TRIGGER.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Malaja
Команда клуба

de
Offline Offline
Пол: Женский

« Ответ #16 : 15-04-2008 08:20 » 

Ром,

о, так это ж здорово! Так можно упростить жизнь! Спасибочки! Ага
Записан

холоднокровней, Маня, Ви не на работе
---------------------------------------
четкое определение сущности бытия:
- А мы в прошлом или в будущем?- спросила Алиса.
- Мы в жопе, - ответил кролик.
- А "жопа" - это настоящее? - спросила Алиса.
- А "жопа" - это у нас символ вечности.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines