Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
funktionen_fuer_trigger_erstellen [2015/01/30 00:49] webproducer angelegt |
funktionen_fuer_trigger_erstellen [2015/12/19 00:00] (aktuell) |
||
---|---|---|---|
Zeile 13: | Zeile 13: | ||
---- | ---- | ||
- | BEGIN | + | BEGIN |
- | New.geography_length := ST_Length( New.geography ); | + | New.centroid = ST_Centroid( New.geography::geometry ); |
- | IF GeometryType( New.geography ) = 'POLYGON' THEN | + | IF GeometryType( New.geography ) = 'POLYGON' THEN |
- | IF ST_IsValid( ST_AsText( New.geography ) ) = 't' THEN | + | IF ST_IsValid( ST_AsText( New.geography ) ) = 't' THEN |
- | New.geography_area := ST_Area( New.geography ); | + | New.geography_area := ST_Area( New.geography ); |
- | New.geography_perimeter := ST_Perimeter( New.geography ); | + | New.geography_perimeter := ST_Perimeter( New.geography ); |
+ | ELSE | ||
+ | RAISE EXCEPTION 'Polygon intersection by column geography'; | ||
+ | END IF; | ||
ELSE | ELSE | ||
- | RAISE EXCEPTION 'Polygon intersection by column geography'; | + | New.geography_length := ST_Length( New.geography ); |
+ | IF ST_IsValid( ST_AsText( New.geography_polygon ) ) = 't' THEN | ||
+ | New.geography_area := ST_Area( New.geography_polygon ); | ||
+ | New.geography_perimeter := ST_Perimeter( New.geography_polygon ); | ||
+ | ELSE | ||
+ | RAISE EXCEPTION 'Polygon intersection by column geography_polygon'; | ||
+ | END IF; | ||
END IF; | END IF; | ||
- | ELSE | + | Return New; |
- | IF ST_IsValid( ST_AsText( New.geography_polygon ) ) = 't' THEN | + | END |
- | New.geography_area := ST_Area( New.geography_polygon ); | + | |
- | New.geography_perimeter := ST_Perimeter( New.geography_polygon ); | + | |
- | ELSE | + | |
- | RAISE EXCEPTION 'Polygon intersection by column geography_polygon'; | + | |
- | END IF; | + | |
- | END IF; | + | |
- | Return New; | + | |
- | END | + | |
---- | ---- | ||
Entspricht: | Entspricht: | ||
- | UPDATE discovery SET geography_area = 5, geography_length = 2 WHERE id=52 | + | UPDATE discovery SET centroid = ST_Centroid( New.geography::geometry ), |
+ | geography_area = 5, geography_perimeter = 9, geography_length = 2 WHERE id=52 | ||
===== Neuen Datenbank-Trigger in phpPgAdmin anlegen ===== | ===== Neuen Datenbank-Trigger in phpPgAdmin anlegen ===== | ||
- | {{:trigger-in-phppgadmin-erstellen.gif|{{:trigger-in-phppgadmin-erstellen.gif?200|}}}} | + | {{:trigger-in-phppgadmin-erstellen.gif|{{:trigger-in-phppgadmin-erstellen.gif?200|}} |