Forum Delphi.cz

Databáze => Firebird a Interbase => Téma založeno: Stanislav Hruška 26-07-2021, 12:41:18

Název: je trigger aktívny?
Přispěvatel: Stanislav Hruška 26-07-2021, 12:41:18
Dá sa to nejako zistiť? Ja som to nenašiel.
Název: Re:je trigger aktívny?
Přispěvatel: mbx 26-07-2021, 13:10:56
Select RDB$TRIGGER_INACTIVE from rdb$triggers where rdb$trigger_name='xxxxx'

M.
Název: Re:je trigger aktívny?
Přispěvatel: Stanislav Hruška 26-07-2021, 14:54:26
Ďakujem.
Pre istotu sa ešte opýtam, či to stojí za to kontrolovať a zariadiť sa podľa toho. Ja totiž pre RunTime potrebujem deaktivovať spúšte. Nechcem to robiť, ak nie sú aktívne.
Teraz pred každým výpočtom aktivujem (debug), alebo deaktivujem (runtime) spúšte. Podľa mojich vedomostí sa to trvalo zapíše do DB, takže pri nasledovnom spustení výpočtu už nie je potrebné meniť stav spúšti.
Název: Re:je trigger aktívny?
Přispěvatel: mbx 26-07-2021, 15:30:19
Pokud podle neceho jineho nepoznas, v jakem je to stavu, zkontroluj.
Treba je mozne, ze nekdo obnovi DB ze zalohy, nebo programu podstrci DB v predem neznamem stavu, ne?
Název: Re:je trigger aktívny?
Přispěvatel: Stanislav Hruška 26-07-2021, 15:56:55
Práve ten "neznámy stav" mi rozbíja hlavu. Tých spúští je 50, čo je dosť na to aby sa to niekde rozhodilo.
Radšej to zakaždým nastavím.
Název: Re:je trigger aktívny?
Přispěvatel: pepak 26-07-2021, 16:52:19
Raději to přepiš tak, abys ty triggery deaktivovat nemusel. Můžeš si například vytvořit políčko (třeba CHAR(1)), které normálně bude prázdné, ale když zrovna budeš chtít signalizovat, "při téhle operaci nechci použít trigger", tak ho naplníš. Nebo si pro ten účel budeš udržovat záznam v globální temporary tabulce, pokud to potřebuješ napříč více tabulkami. Nebo cokoliv, hlavně ne vypínat triggery. Co když někdo tu tvou aplikaci spustí víckrát nad jednou databází?!
Název: Re:je trigger aktívny?
Přispěvatel: Stanislav Hruška 26-07-2021, 17:09:25
Nebo cokoliv, hlavně ne vypínat triggery. Co když někdo tu tvou aplikaci spustí víckrát nad jednou databází?!
Tak to objasním:
Pri ladení aplikácie som potreboval vidieť údaje v GTT. Na to mám zvlášť tabuľky, ktoré sa plnia pomocou trigger.
Pri režime runtime, t.j. u zákazníka tie to údaje nepotrebujem. Preto chcem deaktivovať spúšťače. Pri prvom spustení predlžujú výpočet o 100 a pri ďalších o 50 %.
Žiadne iné spúšťače nemám.
Rozmýšľal som aj nad možnosťou, žeby som v produkčnej DB pomocné tabuľky vyhodil a spúšte zlikvidoval.
Název: Re:je trigger aktívny?
Přispěvatel: Stanislav Hruška 26-07-2021, 17:37:24
Práve teraz som sa rozhodol udržiavať dve DB. Vývojársku a produkčnú.
Název: Re:je trigger aktívny?
Přispěvatel: vandrovnik 26-07-2021, 18:35:13
Práve teraz som sa rozhodol udržiavať dve DB. Vývojársku a produkčnú.

V tom případě bych si nechal po ruce skript, který z té produkční udělá vývojářskou. Může se hodit, až zákazník napíše "tady posíláme ta data, podívejte se na to"...
Název: Re:je trigger aktívny?
Přispěvatel: Stanislav Hruška 26-07-2021, 18:46:13
Práve teraz som sa rozhodol udržiavať dve DB. Vývojársku a produkčnú.

V tom případě bych si nechal po ruce skript, který z té produkční udělá vývojářskou. Může se hodit, až zákazník napíše "tady posíláme ta data, podívejte se na to"...
Dobrý nápad. Platí to aj opačne. Tie skripty si ovšem musím naštudovať. Ale na to mám kóóópu času :)  Ak sa aplikácia dostane do obehu, tak ich aj tak budem musieť riešiť pre prípadné zmeny DB.
Název: Re:je trigger aktívny?
Přispěvatel: vandrovnik 26-07-2021, 18:49:18
Dobrý nápad. Platí to aj opačne. Tie skripty si ovšem musím naštudovať. Ale na to mám kóóópu času[/font] :)  Ak sa aplikácia dostane do obehu, tak ich aj tak budem musieť riešiť pre prípadné zmeny DB.

No a nechceš to radši udělat, jak psal pepak, jen podle něčeho testovat?
Já tam často mám:
 IF (CURRENT_ROLE<>'IMPORTY') THEN ...
Tj. pro připojení, které využívá roli IMPORTY, se ty triggery nevykonávají.
Název: Re:je trigger aktívny?
Přispěvatel: Stanislav Hruška 26-07-2021, 19:10:40
Ten test je uvedený v prvej odpovedi na túto tému ;)  Otestujem si stav jednej spúšte a viem na čom som. Jediné čoho sa obáva je, žeby tie spúšte nemali rovnaké nastavenie. Čo je málo pravdepodobné. Hm, to sa dá riešiť jedinou transakciou. Buď všetko, alebo nič! Aj tak sa rozhodujem podľa direktívy {DEBUG}
Název: Re:je trigger aktívny?
Přispěvatel: vandrovnik 26-07-2021, 19:54:14
Ta první odpověď popisuje, jak zjistíš, jestli je trigger aktivní.

Ten můj test vychází z toho, že trigger jako takový je aktivní pořád, ale v závislosti na něčem (já používám roli, ale možností je víc) se příkazy v něm nevykonají. Má to výhodu, že nemusíš triggery zapínat/vypínat, tím pádem můžeš proti té databázi např. mít spuštěné zároveň normální klienty i ty testovací a pro jedny se triggery vykonávají a pro jiné ne.
Název: Re:je trigger aktívny?
Přispěvatel: pf1957 26-07-2021, 20:07:54
Práve teraz som sa rozhodol udržiavať dve DB. Vývojársku a produkčnú.
S ohledem na pouziti tech triggeru bych zustal u puvodni myslenky: napsal bych SP, ktera vsechny triggery zapne/vypne a tu zavolal. Klidne natvrdo pri startu aplikace podle rezimu DEBUG/NODEBUG. Riziko, ze se v tom bude stourat nejaky BFA bych ignoroval, tak at si stoura a zapne si to.
Název: Re:je trigger aktívny?
Přispěvatel: Stanislav Hruška 26-07-2021, 20:49:13
Ta první odpověď popisuje, jak zjistíš, jestli je trigger aktivní.

Ten můj test vychází z toho, že trigger jako takový je aktivní pořád, ale v závislosti na něčem (já používám roli, ale možností je víc) se příkazy v něm nevykonají. Má to výhodu, že nemusíš triggery zapínat/vypínat, tím pádem můžeš proti té databázi např. mít spuštěné zároveň normální klienty i ty testovací a pro jedny se triggery vykonávají a pro jiné ne.
Teraz už chápem.
Práve teraz som sa rozhodol udržiavať dve DB. Vývojársku a produkčnú.
S ohledem na pouziti tech triggeru bych zustal u puvodni myslenky: napsal bych SP, ktera vsechny triggery zapne/vypne a tu zavolal. Klidne natvrdo pri startu aplikace podle rezimu DEBUG/NODEBUG. Riziko, ze se v tom bude stourat nejaky BFA bych ignoroval, tak at si stoura a zapne si to.
To je ono. Pri štarte aplikácie. To mi úplne stačí. Vyhnem sa opakovanému nastavovaniu.