Outdated version of the documentation. Find the latest one here.

16.6. Lesson: Regels

Regels maken het mogelijk de “queryboom” van een inkomende query te herschrijven. Een veel voorkomend gebruik is om weergaven te implementeren, inclusief een bij te werken weergave. - Wikipedia

Het doel voor deze les:: Leren nieuwe regels voor de database te maken.

16.6.1. Materialised Views (Rule based views)

Stel dat u elke wijziging van phone_no in uw tabel people wilt loggen in een tabel people_log. Dus maakt u een nieuwe tabel:

create table people_log (name text, time timestamp default NOW());

Maak, in de volgende stap, een regel die elke wijziging van een telefoonnummer in de tabel people in de tabel people_log logt:

create rule people_log as on update to people
  where NEW.phone_no <> OLD.phone_no
  do insert into people_log values (OLD.name);

Laten we een telefoonnummer aanpassen om te testen of de regel werkt:

update people set phone_no = '082 555 1234' where id = 2;

Controleer of de tabel people juist werd bijgewerkt:

select * from people where id=2;

 id |    name    | house_no | street_id |   phone_no
----+------------+----------+-----------+--------------
  2 | Joe Bloggs |        3 |         2 | 082 555 1234
(1 row)

Dankzij de regel die we hebben gemaakt, zal de tabel people_log er nu zo uitzien:

select * from people_log;

    name    |            time
------------+----------------------------
 Joe Bloggs | 2014-01-11 14:15:11.953141
(1 row)

Notitie

De waarde van het veld time is afhankelijk van de huidige datum en tijd.

16.6.2. In Conclusion

Regels stellen u in staat automatisch gegevens toe te voegen of te wijzigen in uw database om wijzigingen in andere delen van de database weer te geven.

16.6.3. What’s Next?

De volgende module brengt u naar het gebruiken van de Ruimtelijke database met behulp van PostGIS, wat deze concepten overneemt en die toepast op gegevens voor GIS.