Hallo!
da ich erst vor kurzem wirklich begonnen habe auch eigene sql Scripts zu schreiben, bin ich momentan etwas hilflos. Ich hoffe also zumindest einen kleinen Hinweis zu bekommen und somit etwas schneller voran…
… zunächst: Ich habe eine Tabelle mit Polygonen aus der ich alle Punkte der Polygone in eine neue tabelle einlesen will. Wenn also neue Polygone kartiert werden, soll der trigger die Punkte automatisch auslesen und speichern, sowie die Punkte der gelöschten Polygone entfernen. Mittlerweile funktioniert das auslesen der Punkte, sowie der id der Polygone. Allerdings habe ich probleme die gelöschten Punkte zu entfernen.
Zum besseren Verständnis erst mal was ich bisher habe:
BEGIN
INSERT INTO trafo.points_img (gid, parcelid, geom)
(SELECT nextval(‘trafo.seq_gid_points_img’) as gid, a.parcelid, a.geom FROM (SELECT b.gid as parcelid,(my_ST_DumpPoints(geom)).* as geom FROM schemaC.parcel as b)as a);
DELETE FROM trafo.points_img AS t WHERE NOT EXISTS (SELECT ‘exists’ FROM schemaC.parcel.gid AS c WHERE c.gid = t.gid);
RETURN NEW;
Und hier der Trigger in meiner polygon tabelle:
CREATE TRIGGER polygonpoints
BEFORE INSERT OR UPDATE
ON schemaC.parcel
FOR EACH ROW
EXECUTE PROCEDURE trafo.polygonpoints();
Und hier der Fehler der auftritt, wenn ich ein neues polygon hinzufüge:
pgAdmin III
An error has occurred:
FEHLER: Verweise auf andere Datenbanken sind nicht implementiert: »schemaC.parcel.gid«
LINE 1: …trafo.points_img.gid NOT IN (SELECT ‘exists’ FROM schemaC.p…
^
QUERY: DELETE FROM trafo.points_img WHERE trafo.points_img.gid NOT IN (SELECT ‘exists’ FROM schemaC.parcel.gid )
CONTEXT: PL/pgSQL function “polygonpoints” line 9 at SQL-Anweisung
Ich hab mir dann gedacht, dass ich die parcel.gid vielleicht als fremdschlüssel importieren muss, aber die würde ja öfters vorkommen, da ich ja mehrere Punkte pro polygon habe. ich hatte zuvor auch versucht beide zu verknüpfen, also die ausgelesenen parcelids und die neue gid von points_img, leider funktionierte das auch nicht so richtig!
Schon mal vielen Dank für jede Antwort! Und falls irgendwem etwas einfällt bin ich dankbar darum!!!