Einzelnen Beitrag anzeigen

Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
671 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Trigger oder Events der DB-Komponenten zum Updaten von Fremdtabelle

  Alt 1. Jan 2018, 23:34
unterschiedliche Metadaten bei sonst gleicher DB ist eine nicht so dolle idee, weil dadurch
ohne Ende Baustellen aufgerissen werden, wenn du mal einen Metadatenabgleich machen musst

Leg dir lieber eine Tabelle an, in der die Features deiner lokalen Datenbank an oder abschaltbar sind
und lasse das über einen überall identischen Trigger machen, der eben ggf den lokalen Wert dieser
Tabelle abfragt und wenn der nicht gesetzt ist, dann einfach nix macht

so nach dem motto

Code:
CREATE OR ALTER trigger RG_AI for RG
active AFTER insert position 0
as
begin
  if (exists(select lagerbuchung from parametertabelle where lagerbuchung='J'))
  then
  begin
    ----...... was auch immer dann kommt
  end
end
Wir verwalten im größten Projekt 150 replizierte Datenbanken an verschiedenen Standorten, wenn
da jeder auch nur minimal andere Metadaten hätte würden wir bekloppt werden. Das ist da zwar
noch wesentlich komplexer aufgebaut, aber der o.a. Tip sollte die eine Sackgasse ersparen.

und falls du angst haben solltest das der weg zu langsam ist, packe die Tabelle in eine GTT
Global Temporary Table on commit preserve und frag das von da ab, ist dann nur im RAM.

Ist aber nicht wirklich wichtig, solche simplen Selects kann eine brauchbarer Firebird Server
locker 250000 - 500000 mal pro Sekunde abarbeiten, wenn die aus dem Trigger aufgerufen werden.

Ach noch was: Ab fb3 geht das auch über eine Stored Function und würde den code etwa so aussehen
Lassen

Code:

create function LagerBuchungAktiv()
returns boolean
as
begin
  if (exists(select lagerbuchung from parametertabelle where lagerbuchung='J'))
  then return true;
  else return false;
end;


CREATE OR ALTER trigger RG_AI for RG
active AFTER insert position 0
as
begin
  if (LagerBuchungAktiv())
  then
  begin
    ----...... was auch immer dann kommt
  end
end
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung

Geändert von IBExpert ( 1. Jan 2018 um 23:49 Uhr)
  Mit Zitat antworten Zitat