[FB] Coś jakby połączenie procedury z triggerem

0

Potrzebuję uzyskać taki mechanizm.
Jest sobie jakaś baza na Firebirdzie.

Przed każdym insertem i updatem(obojętnie do jakiej tabeli), muszę odpalić procedurę składowaną, która: sprawdzi wartość jakiegoś argumentu*, a następnie wykona pewne operacje, wiedząc, czy chodzi o update, czy insert i znając nazwę tabeli, w której zmiana zachodzi.

*argument(zmienna) musi być jakby globalny dla całej bazy.

Chodzi o to, że mam bazodanowy program. Jest sobie baza globalna(główna) i lokalna(dane do niej są co jakiś czas importowane z bazy głównej).

Następnie okazuje się w pewnym momencie, że połączenie z bazą główną zostało utracone(np. nie ma internetu). Teraz muszę przekazać do bazy lokalnej jakąś zmienną mówiącą o tym, że połączenia z bazą główną nie ma.

I teraz przy każdym update i insert, ta moja procedura sprawdza tą zmienną i jeśli połączenia z bazą główną nie ma to wtedy wykonuje pewne operacje, jeśli jest to nic nie robi.

Nie mam pojęcia, jak coś takiego osiągnąć. Mam nadzieję, że się da.

0

Tak na zsybko to przychodzi mi na mysl jedna rzecz zrob sobie tabele z parametrami, jezeli nie bedzi epolaczenia z bazla glowna to ustawisz flage na jarsosc np false a w trigersie bedziesz sprawdzal czy jest false czy true i wtedy bedziesz sobie odpala co tylko bedizesz chcial (oczywiscie w ramach rozsadku)

0
cobra napisał(a)

Tak na zsybko to przychodzi mi na mysl jedna rzecz zrob sobie tabele z parametrami, jezeli nie bedzi epolaczenia z bazla glowna to ustawisz flage na jarsosc np false a w trigersie bedziesz sprawdzal czy jest false czy true i wtedy bedziesz sobie odpala co tylko bedizesz chcial (oczywiscie w ramach rozsadku)

Chodzi mi o to, że chce uniknąć stosowania triggerów. Tzn. w takiej sytuacji, musiałbym zmieniać trigger w każdej tabeli.

Wyjaśnię to inaczej. Załóżmy, że jest trigger globalny. Tzn. nie jest założony na żadną konkretną tabelę, tylko na bazę. Taki trigger zna nazwę bazy, w której robione są zmiany. I coś takiego chcę osiągnąć.

0

Juchas poczytaj o replikacji i zamiast pisać coś, co jak widać Ci nie idzie zastosuj np. http://fibre.sourceforge.net/ lub jakiś komercyjny odpowiednik

BTW. nie ma czegoś takiego jak globalny trigger - pisząc coś takiego nie rozumiesz podstawy działania i sensu istnienia wyzwalaczy. Nie krytykuję Cię ale widzę, że idziesz dość ostro w stronę baz ale nie masz żadnych podstaw teoretycznych, a bez tego na prawdę będzie Ci ciężko zrobić jakąkolwiek bazę, która nie będzie się wykładać lub zdychać przy większej ilości danych lub wiekszym obciążeniu

0
Misiekd napisał(a)

Juchas poczytaj o replikacji i zamiast pisać coś, co jak widać Ci nie idzie zastosuj np. http://fibre.sourceforge.net/ lub jakiś komercyjny odpowiednik

Chodzi o to, że muszę mieć własny mechanizm replikacji, bo wszystkie inne, które testowałem nie działają tak, jak powinny w moim programie.

BTW. nie ma czegoś takiego jak globalny trigger - pisząc coś takiego nie rozumiesz podstawy działania i sensu istnienia wyzwalaczy.

Rozumiem, ale nie wiedziałem, czy coś takiego istnieje, czy nie, więc zapytałem, bo bardzo by mi się przydało :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1