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.