15.6. Lesson: Regeln
Regeln erlauben es den „Abfragebaum“ einer eingebenen Abfrage umzuschreiben. Eine verbreitete Nutzung ist die Erstellung von Sichten, einschließlich aktualisierbarer Sichten. - Wikipedia
Ziel dieser Lektion: Zu lernen, wie man neue Regeln für eine Datenbank erstellt.
15.6.1. Erstellen einer Regel zum protokollieren
Angenommen man möchte alle Änderungen des Feldes phone_no in der Tabelle people in einer anderen Tabelle people_log aufzeichnen. Dann müsste man eine neue Tabelle erstellen:
create table people_log (name text, time timestamp default NOW());
Im nächsten Schritt erstellt man eine Regel, die alle Änderungen des Feldes phone_no in der Tabelle people in die Tabelle people_log protokolliert:
create rule people_log as on update to people
where NEW.phone_no <> OLD.phone_no
do insert into people_log values (OLD.name);
Um die Regel zu testen, ändern wir eine Telefonnummer:
update people set phone_no = '082 555 1234' where id = 2;
Überprüfen Sie, ob die Tabelle people richtig aktualisiert wurde:
select * from people where id=2;
id | name | house_no | street_id | phone_no
----+------------+----------+-----------+--------------
2 | Joe Bloggs | 3 | 2 | 082 555 1234
(1 row)
Mit Hilfe der Regel die wir erstellt haben, sieht die Tabelle people_log nun wie folgt aus:
select * from people_log;
name | time
------------+----------------------------
Joe Bloggs | 2014-01-11 14:15:11.953141
(1 row)
Bemerkung
Der Wert des Feldes time wird entsprechend des aktuellen Datums und der Zeit vergeben.
15.6.2. In Conclusion
Regeln erlauben es, Daten automatisch hinzuzufügen oder zu ändern basierend auf Änderungen in anderen Teilen der Datenbank.
15.6.3. What’s Next?
Das nächste Modul enthält eine Einführung in räumliche Datenbanken mit PostGIS. Die behandelten Datenbankkonzepte werden mit GIS Daten angewendet.