Viktigt
Översättning är en gemenskapsinsats du kan gå med i. Den här sidan är för närvarande översatt till 100.00%.
15.6. Lektion: Regler
Regler gör att ”frågeträdet” i en inkommande fråga kan skrivas om. En vanlig användning är att implementera vyer, inklusive uppdateringsbara vyer. - Wikipedia
Målet för den här lektionen: Att lära dig hur du skapar nya regler för databasen.
15.6.1. Skapa en loggningsregel
Säg att du vill logga varje ändring av phone_no i din people-tabell i en people_log-tabell. Så du skapar en ny tabell:
create table people_log (name text, time timestamp default NOW());
I nästa steg skapar du en regel som loggar varje ändring av ett phone_no i tabellen people i tabellen people_log:
create rule people_log as on update to people
where NEW.phone_no <> OLD.phone_no
do insert into people_log values (OLD.name);
För att testa att regeln fungerar, låt oss ändra ett telefonnummer:
update people set phone_no = '082 555 1234' where id = 2;
Kontrollera att tabellen people uppdaterades korrekt:
select * from people where id=2;
id | name | house_no | street_id | phone_no
----+------------+----------+-----------+--------------
2 | Joe Bloggs | 3 | 2 | 082 555 1234
(1 row)
Nu, tack vare den regel vi skapade, kommer tabellen people_log att se ut så här:
select * from people_log;
name | time
------------+----------------------------
Joe Bloggs | 2014-01-11 14:15:11.953141
(1 row)
Observera
Värdet på fältet time beror på aktuellt datum och aktuell tid.
15.6.2. Sammanfattningsvis
Med regler kan du automatiskt lägga till eller ändra data i din databas så att de återspeglar ändringar i andra delar av databasen.
15.6.3. Vad händer härnäst?
Nästa modul introducerar dig till Spatial Database using PostGIS, som tar dessa databaskoncept och tillämpar dem på GIS-data.