Datenupdate, Count () Ergebnis in Spalte , Löschen- aber nicht für immer

Hallo zusammen,
ich suche mich gerade durch die Tutorials und Manuals und bleibe trotzdem an gleich drei Fragen hängen. Vielleicht kann mir einer von Euch weiterhelfen?

  1.   Welche automatische Update-Variante ist geeignet?
    
  2.   Wie schreibe ich Ergebnisse aus einer Count() Funktion in eine Spalte?
    
  3.   Wie stelle ich es an, dass Einträge als „gelöscht“ markiert werden?      Ich verwende PostgreSQL 9.0, PostGIS-Erweiterung und ausschließlich den pgAdmin III- (ohne den gar nix laufen würde ).
    



Im Folgenden die Erläuterungen


Zu Frage 1)
Meine PostGIS Tabelle „punkte“ wird teilweise über einen Client gefüllt.
Für die Spalten, die nicht über den Client gefüllt werden, habe ich Updates definiert wie sie gefüllt werden sollen z.B. Eintragen der Koordinatenwerte. Wie bekomme ich es hin, dass die Abfrage immer dann ausgeführt wird, wenn ein neuer Wert über den Client in die Tabelle eingetragen wird? Ich habe folgende Stichworte als Möglichkeiten aufgeschnappt: Trigger, pg_agent, geplante Tasks, cron…
Was ist am besten geeignet, wonach sollte ich suchen?

Zu Frage 2)

Es gibt folgendes Update für die Spalte Polygone in der Tabelle -punkte-


UPDATE punkte AS b SET “Polygone” = “Poly” from lk AS gr WHERE Within ( b.the_geom, gr.the_geom )= TRUE;


In der Tabelle Punkte wird „Polygone“ also immer mit der Bezeichnung aus „Poly“ generiert, in dem es räumlich liegt. Im nächsten Schritt möchte ich, dass die Punkte neben der Bezeichnung aus „Poly“ eine fortlaufende Nummer je Poly erhalten. Zu allem Überfluss soll diese fortlaufende Nummer in ihrem Leben nur einmal vergeben werden .

Meine Idee ist, dass ich vielleicht über count() die bereits vorhandenen Einträge in „punkte“ nach „Polygon“ gruppiere und zähle und diesen Wert dann als fortlaufende Nummer übernehme? Das ginge natürlich nur, wenn die Anweisung zeilenweise durchlaufen würde, oder?
Das ist es, was ich mir schon so zusammengesucht habe:


SELECT COUNT(“Polygon”) AS anzahl FROM punkte GROUP BY “Polygon”;


Geht das schon mal in die richtige Richtung?


Zu Frage 3)
Gibt es eine Möglichkeit, dass ich Punkte zwar „lösche“ oder als gelöscht markiere, sie damit nicht mehr “sichtbar”- aber trotzdem noch in der Tabelle vorhanden sind? Damit würde ich dann sicherstellen können, dass die Nummern weiterhin fortlaufend gezählt werden und nur einmal vergeben werden. Muss ich da mit einem View arbeiten?

Ich wäre für ein paar Tipps sehr dankbar!


Viele Grüße
Sonni

Hi,

zu Frage 2) es gibt “selbstzählende” Datentypen: sieh mal unter
Datentypen
nach.

cu jth

Frage 1: Trigger sind was du suchst. Aber du musst bei Geometrien sicherstellen, das sie auch die gewünschte SRID bekommen. Das kannst du aber auch mit dem, gleichen Trigger erledigen. Da ich mal das gleich Problem hatte mit Daten aus drei GK-Streifen hab ich die alle in WGS84 transformiert und halte die orginalen Koordinaten als Werte vor.

Frage 2: Auch die kann man mit dem Trigger lösen, indem man vor dem Einfügen zählt wieviel schon drin sind und ggf eins dazu zählt, je nach dem ob die Zählung bei 1 oder 0 beginnen soll.

Frage 3: Ich würde ein Boolean-Feld einführen, das mir sagt ob ein Punkt gelöscht ist. Die gültigen kannst du dann in einem View darstellen oder die Abfrage im jeweiligen Client formulieren

Gruß Uwe