Dafür bin ich auch sehr dankbar. Kannst du mir Quellen sagen, wo ich mich informieren kann? Literatur bzw. gute Quellen im Web? Die Doku auf der offiziellen Seite ist nicht besonders hilfreich. Da steht zwar alles drin, aber das ist zu theoretisch und ohne Anwendungsbeispiele.
Mit PL/PGSQL bin ich aber zumindest auf dem richtigen weg oder?
Geändert von andetsa (07.03.2010 um 12:11 Uhr)
Ja. Ich hab ganz gerne auf Varlena, LLC | PostgreSQL General Bits Newsletter geschmöckert, leider hat Elein Mustain da wohl das Interesse verloren. Ansonsten vielleicht einfach mal mit der Doku anfangen und versuchen, ein Problem anzugehen. Ich finde die Doku recht gut und praktisch.
Andreas
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
So, ich melde mich nach längerer Zeit mal wieder zu WortVielleicht interessiert es ja jemanden, der den Thread verfolgt hat.
Andreas hatte mir ja freundlicherweise eine PL/PGSQL-Funktion gebastelt, die prüft, ob ein Wert in einer Spalte schon vorhanden ist. Falls ja, sollte der Wert die bereits vorhandene ID erhalten, falls nicht sollte eine neue generiert werden. Das ganze sah dann wie folgt aus:
Die Funktion prüfte nur eine Spalte, ich musste jedoch mehrere Spalten prüfen, ob der Datensatz schon existiert. Nach ein bisschen Lektüre hatte ich dann eine Funktion die mehrere Spalten auf einmal prüft, und zwar diese:Code:CREATE OR REPLACE FUNCTION keywords_check(in value text) RETURNS int AS $$ declare ret int; BEGIN INSERT INTO keywords (keywords) SELECT $1 WHERE NOT EXISTS (SELECT keywords FROM keywords WHERE keywords=$1); SELECT INTO ret keywords_id from keywords where keywords=$1; RETURN ret; END; $$ language plpgsql;
So meintest du das Andreas, oder?Code:CREATE OR REPLACE FUNCTION zeitschrift_check(in value text,in value text,in value text) RETURNS int AS $$ declare ret int; BEGIN INSERT INTO zeitschrift (name,kurzname,issn) SELECT $1,$2,$3 WHERE NOT EXISTS (SELECT name,kurzname,issn FROM zeitschrift WHERE name=$1 AND kurzname=$2 AND issn=$3); SELECT INTO ret zeitschrift_id from zeitschrift where name=$1 and kurzname=$2 and issn=$3; RETURN ret; END; $$ language plpgsql;
Gruß
Geändert von andetsa (08.04.2010 um 12:47 Uhr)
Ich versuche vergeblich eine Abfrage zu bauen, die sowohl die derzeitige Sequenz einer anderen Tabelle erfasst und gleichzeitig über die unten genannte Funktion prüft ob 3 Werte schon in der Tabelle stehen. Wie kann ich das verknüpfen? Danke schonmal!
Code:INSERT INTO ausgabe (fk_zeitschrift_id,heft_nr,jahr,jahrgang) VALUES (currval('zeitschrift_zeitschrift_id_seq'), SELECT * FROM ausgabe_check ('2','1999','82'));Code:CREATE OR REPLACE FUNCTION ausgabe_check(in value text,in value text,in value text) RETURNS int AS $$ declare ret int; BEGIN INSERT INTO ausgabe (heft_nr,jahr,jahrgang) SELECT $1,$2,$3 WHERE NOT EXISTS (SELECT heft_nr,jahr,jahrgang FROM ausgabe WHERE heft_nr=$1 AND jahr=$2 AND jahrgang=$3); SELECT INTO ret ausgabe_id from ausgabe where heft_nr=$1 and jahr=$2 and jahrgang=$3; RETURN ret; END; $$ language plpgsql;
Kann mir da keiner helfen?Wie könnte ich das realisieren?
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen