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|}} |