Trigger für Insert or Update

Tachchen zusammen,

ich versuche gerade krampfhaft einen Trigger zuschreiben. Es geht darum, das ich aus einem VB Skript Daten stumpf in die DB schreiben will. Nun kommt es aber vor, das Datensätze mehrmal vorkommen. Nun will ich aber, das die DB entscheidet, ob es ein Insert oder Update macht(um das Skrikt nicht noch größer werden zu lassen).
Der Trigger soll nun erst in der Tabelle nachsehen ob der Datensatz da ist oder nicht.

Code der Tabelle:
CREATE TABLE “public”.“product” (
“hostname” VARCHAR(15) NOT NULL,
“displayname” VARCHAR(80) NOT NULL,
“installdate” VARCHAR(15),
“displayversion” VARCHAR(25),
“insertdate” DATE NOT NULL,
CONSTRAINT “product_pkey” PRIMARY KEY(“hostname”, “displayname”, “insertdate”)
) WITHOUT OIDS;

Habe Ihr einen Vorschlag???

Code für den Trigger sollte richtig sein, aber wie soll dann die Funktion aussehen?
CREATE TRIGGER “product_tr” BEFORE INSERT OR UPDATE
ON “public”.“product” FOR EACH ROW
EXECUTE PROCEDURE “public”.“insertupdate”();

Hallo raptor0,

wofür einen Trigger? Die Eindeutigkeit eines Datensatzen wird durch den PRIMARY KEY bestimmt. Wenn Du zweiten Datensatz mit gleichen PRIMARY KEY einfügen willst, wird eine Fehlermeldung erzeugt, die Du mit deinem VB-Script doch abfangen kannst.



mfg

fristo

Moinsen fristo,

okay mit der Auswertung der Fehlermeldung hast recht, aber wenn ich das mit einem Trigger lösen könnte, kann ich eine ganze Menge an Zeilen in meinem Skript rausschmeißen und es wird auch wieder übersichtlicher.

MfG
raptor0

Hallo raptor0,

so ganz verständlich ist Deine Antwort nicht, da Du oben schreibst:

Der Trigger soll nun erst in der Tabelle nachsehen ob der Datensatz da ist oder nicht

Einfacher wie die von mir vorgeschlagen Methode geht es nicht mehr, da durch den PRIMARY KEY nur eindeutige Datensätze sichergestellt sind.

Wie eine Triggerfunktion aufgebaut ist kannst Du hier http://www.pg-forum.de/viewtopic.php?t=306&highlight= nachlesen. Zusätzlich solltest Du dir Kapitel “38.10 Triggerprozeduren” im deutschen Handbuch anschauen. Hier sind verschieden Variable erklärt, die Du in der Triggerfunktion unbedingt benötigst.



mfg

fristo

Hmm, kann man überhaupt einen Trigger für den Fehler beim Primary Key auslösen?

Moinsen fristo,

kannst Du mir denn mal den Link für das deutsche Handbuch geben oder auch jeder andere der dieses liest…

MfG
raptor0

Hallo raptor0,

das was ich als deutsches Handbuch bezeichnet habe, kann Du von diesem Link herunterladen:

http://www.postgresql.org/docs/books/pghandbuch.html.de .

Beachte aber, dass die Ausgabe des Buches aus dem Jahre 2003 stammt und sich seitdem einiges in PostgreSQL geändert hat. Maßgebend sollte für dich immer die englische Original-Dokumentation sein. Die Beschreibung der Variable findest Du dort im Kapitel 36.10.

Ein weiteres Online-Buch in englischer Sprache gibt es hier:

http://www.commandprompt.com/ppbook .



mfg

fristo

hi,

ich verweise hier auch mal freundlich auf den online shop link im menü unterhalb der suche…

cu tb

Nachdenken hilft weiter!


mfg

fristo

Nein, sonst würde ich nicht fragen.

Wenn der Fehler sowieso schon ausgelöst ist, ist meine Transaktion nur noch zurückzurollen …

Hallo ads,

Du hast ja recht. Aber jeder will doch seine eigene Erfahrungen sammeln. Und das sollte man akzeptieren.



mfg

fristo

fristo: die Art und Weise deiner Antworten ist nicht sonderlich hilfreich.

Ein RTFM kann ich jedem und jederzeit hinwerfen …