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