Online executing binaries on trigger action
Posted in 2000
Topics: Triggers, Constraints & Referential Integrity
Hi, my name is Martin if I´m not too familiar with Informix in Database-Programming in general. Maybe someone coult tell me the easiest way to let Informix execute a binariy on certain parameters as a trigger action. Thanx a lot, Martin
Martin Gentzsch wrote:
Martin Gentzsch wrote:
>
> Hi, my name is Martin if I´m not too familiar with Informix
> in Database-Programming in general.
> Maybe someone coult tell me the easiest way to let Informix
> execute a binariy on certain parameters as a trigger action.
> Thanx a lot,
> Martin
Hi,
wir antworten mal auf deutsch. Einige sind in dieser
NG ja in der Lage, auch diese Sprache zu verstehen.
Also, ein trigger wird definiert entweder für
INSERT order UPDATE oder DELETE Anweisungen, jeweils
für eine konkrete Tabelle, wobei man beim UPDATE
sogar auf einzelne Spaltenänderungen reagieren kann.
Die einzuleitende Aktion kann nun wieder ein INSERT,
UPDATE oder DELETE Befehl, oder der Aufruf einer
Stored Procedure sein. Auch Kombinationen der soeben
genannten Befehle sind zulässig.
Einen Systemaufruf - also das Ausführen eines Programms -
geht aus einem Trigger folglich nicht direkt, sondern
nur indirekt via einer Stored Procedure. Dort sind
Betriebssystemaufrufe erlaubt - funktionieren aber soweit
ich weiß nur unter UNIX.
Ein schnuckeliges Beispiel:
-------------------------------------------------
create table t1 (
f1 char(10),
f2 date
);
create procedure sendmail( u char(8) default "root" )
system 'echo "insert" | mail -s serverinfo ' || u
-- d.h. echo "insert" | mail -s serverinfo username
end procedure;
create trigger testname insert on t1referencing new as neu
for each row ( execute procedure sendmail() );
--------------------------------------------------
Bei jedem Einfügen eines Datensatzes wird nun eine
Mail an "root" geschickt. Ach ja, wenn Du 10.000 Sätze
einfügst, bekommt "root" 10.000 Mails.
Zum FOR EACH Abschnitt gibt es aber auch noch einen
BEFORE und AFTER Abschnitt. Man könnte also auch dafür
sorgen, daß root nur eine Mail bekommt.
Gut gell ?
Viele Grüße aus München
--
Stefan Weideneder
Phone: +49 89/3565478-2 ---------------
--- Fax: +49 89/3565478-3 -------------
------ mailto:/stefan@weideneder.de ---
-------- http://www.weideneder.de -----