Important

Translation is a community effort you can join. This page is currently translated at 93.33%.

15.6. Reguli Lesson:

Regulile permit „arborelui de interogare” rescrierea interogărilor primite. O utilizare comună o reprezintă implementarea vederilor, inclusiv a celor actualizabile. - Wikipedia

Scopul acestei lecții: De a afla cum se pot crea noi reguli pentru baza de date.

15.6.1. Crearea unei reguli de jurnalizare

Presupunem că doriți să înregistrați fiecare schimbare de număr_de_telefon în tabelul jurnalul_personalului. Astfel, veți configura un tabel nou:

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

În etapa următoare, creați o regulă care înregistrează fiecare schimbare de număr_de_telefon în tabelul jurnalul_personalului:

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

Pentru a testa funcționarea regulii, haideți să modificăm un număr de telefon:

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

Asigurați-vă că tabela people a fost actualizată corect:

select * from people where id=2;

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

Acum, datorită regulii pe care am creat-o, tabelul people_log va arăta astfel:

select * from people_log;

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

Notă

Valoarea câmpului time va depinde de data și ora curente.

15.6.2. In Conclusion

Regulile vă permit adăugarea sau modificarea automată a datelor din baza de date, pentru a reflecta modificările din alte părți ale bazei de date.

15.6.3. What’s Next?

Modulul următor vă va introduce în Baza Datelor Spațiale, cu ajutorul PostGIS, care preia conceptele bazelor de date și le aplică datelor GIS.