Autor Téma: je trigger aktívny?  (Přečteno 328 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5912
  • Karma: 43
    • Verze Delphi: W10 + D11
je trigger aktívny?
« kdy: 26-07-2021, 12:41:18 »
Dá sa to nejako zistiť? Ja som to nenašiel.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline mbx

  • Nováček
  • *
  • Příspěvků: 7
  • Karma: 0
    • Verze Delphi: 6-17
Re:je trigger aktívny?
« Odpověď #1 kdy: 26-07-2021, 13:10:56 »
Select RDB$TRIGGER_INACTIVE from rdb$triggers where rdb$trigger_name='xxxxx'

M.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5912
  • Karma: 43
    • Verze Delphi: W10 + D11
Re:je trigger aktívny?
« Odpověď #2 kdy: 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.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline mbx

  • Nováček
  • *
  • Příspěvků: 7
  • Karma: 0
    • Verze Delphi: 6-17
Re:je trigger aktívny?
« Odpověď #3 kdy: 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?

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5912
  • Karma: 43
    • Verze Delphi: W10 + D11
Re:je trigger aktívny?
« Odpověď #4 kdy: 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.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline pepak

  • Padawan
  • ******
  • Příspěvků: 1557
  • Karma: 37
    • Pepak.net
Re:je trigger aktívny?
« Odpověď #5 kdy: 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í?!

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5912
  • Karma: 43
    • Verze Delphi: W10 + D11
Re:je trigger aktívny?
« Odpověď #6 kdy: 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.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5912
  • Karma: 43
    • Verze Delphi: W10 + D11
Re:je trigger aktívny?
« Odpověď #7 kdy: 26-07-2021, 17:37:24 »
Práve teraz som sa rozhodol udržiavať dve DB. Vývojársku a produkčnú.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1247
  • Karma: 51
    • Verze Delphi: 10.3
Re:je trigger aktívny?
« Odpověď #8 kdy: 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"...

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5912
  • Karma: 43
    • Verze Delphi: W10 + D11
Re:je trigger aktívny?
« Odpověď #9 kdy: 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.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1247
  • Karma: 51
    • Verze Delphi: 10.3
Re:je trigger aktívny?
« Odpověď #10 kdy: 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í.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5912
  • Karma: 43
    • Verze Delphi: W10 + D11
Re:je trigger aktívny?
« Odpověď #11 kdy: 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}
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 1247
  • Karma: 51
    • Verze Delphi: 10.3
Re:je trigger aktívny?
« Odpověď #12 kdy: 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.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 3280
  • Karma: 139
    • Verze Delphi: D2007, XE3, DX10
Re:je trigger aktívny?
« Odpověď #13 kdy: 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.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 5912
  • Karma: 43
    • Verze Delphi: W10 + D11
Re:je trigger aktívny?
« Odpověď #14 kdy: 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.
W10 64b, Delphi 10.4, FireBird 3.05
Expert na kladenie nejasne formulovaných otázok.