Hallo!
Ich habe ein Problem, das mich etwas auf dem falschen Fuß erwischt hat. Wenn in eine Tabelle geschrieben wird, ruft ein After Insert or Update - Trigger eine Prozedur in PL/Perl(untrusted) auf, die ihrerseits per Socket-Kommunikation ein Programm anweist, die eingefügte Zeile auszulesen.
Scheinbar wird dabei das externe Programm noch aktiv, bevor die Zeile tatsächlich in die Datenbank geschrieben werden konnte, denn das SELECT schlägt am laufenden Band fehl. Fügt man aber ein Delay ein von beispielsweise 500 ms, dann gelingt der Vorgang immer. Das ist mir allerdings als endgültige Lösung viel zu schmutzig.
Habt ihr eine Idee?
Hier der Quellcode der Triggerprozedur:
SQL-Code:
use strict;
use Socket;
my($remote,$port,$iaddr,$paddr,$proto);
$remote = '
192.168.0.150';
$port = 5000;
$iaddr = inet_aton($remote);
$paddr = sockaddr_in($port,$iaddr);
$proto = getprotobyname('
tcp');
socket(SOCK, PF_INET, SOCK_STREAM, $proto);
connect(SOCK,$paddr);
print SOCK $_TD->{new}{id};
close(SOCK);
return;