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.