15.6. Lesson: Regole
Le regole permettono di riscrivere l“«albero delle query» di una query in ingresso. Un uso comune è quello di implementare le viste, inclusa la vista aggiornabile. - Wikipedia
Obiettivo di questa lezione: Imparare a creare nuove regole per il database.
15.6.1. Creare una regola di log
Diciamo che vuoi registrare ogni cambiamento di phone_no nella tua tabella delle persone in una tabella people_log. Quindi crei una nuova tabella:
create table people_log (name text, time timestamp default NOW());
Nel passo successivo, crea una regola che registra ogni cambiamento di un phone_no nella tabella people nella tabella 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);
Per verificare che la regola funzioni, modifichiamo un numero di telefono:
update people set phone_no = '082 555 1234' where id = 2;
Controlla che la tabella people sia stata aggiornata correttamente:
select * from people where id=2;
id | name | house_no | street_id | phone_no
----+------------+----------+-----------+--------------
2 | Joe Bloggs | 3 | 2 | 082 555 1234
(1 row)
Ora, grazie alla regola che abbiamo creato, la tabella people_log sarà come questa:
select * from people_log;
name | time
------------+----------------------------
Joe Bloggs | 2014-01-11 14:15:11.953141
(1 row)
Nota
Il valore del campo time dipenderà dalla data e dall’ora correnti.
15.6.2. In Conclusion
Le regole ti permettono di aggiungere o cambiare automaticamente i dati nel tuo database per rispecchiare i cambiamenti in altre parti del database.
15.6.3. What’s Next?
Il prossimo modulo ti introdurrà a Spatial Database usando PostGIS, che si basa su questi concetti di database e li applica ai dati GIS.