Crear, Modificar i Esborrar Views i Rules En Postgres: diferència entre les revisions
De FFAWiki
(Es crea la pàgina amb «===Postgres=== ===Inserir Dades=== :Composició: ::INSERT INTO nom_taula [ ( nom_columna [, ...] ) ] VALUES ( expressió); ::En cas de que es vulguin emplenar...».) |
Cap resum de modificació |
||
Línia 1: | Línia 1: | ||
===[[Postgres]]=== | ===[[Postgres]]=== | ||
=== | |||
===Crear VIsta=== | |||
:Composició: | :Composició: | ||
:: | ::CREATE VIEW nom_vista [(camp1, camp2...)] AS <sentència_select> [WITH [CASCADED| LOCAL] CHECK option]; | ||
:::WITH CASCADED CHECK OPTION: Control de la integritat de les consultes de modificació per aquesta vista i les seves dependències amb d’altres cistes (verifica la clàusula WHERE de la vista) | |||
:::WITH LOCAL CHECK OPTION: Control de la integritat de les consultes de modificació només per aquesta vista (verifica la clàusula WHERE de la vista) | |||
:Execució: | |||
::CREATE VIEW nom AS SELECT a.nom, c.curs FROM alumnes a INNER JOIN curs c WHERE a.curs=c.id; | |||
:: | :::Creem una vista a on surt el nom de l'alumne i el curs el qual esta apuntat. | ||
::: | ===Modificar Vista=== | ||
:Composició: | |||
::ALTER VIEW nom_vista [(camp1, camp2, …)] AS <sentència_select>; | |||
::ALTER VIEW nom_vista ALTER [COLUMN] nom_columna SET DEFAULT expressió; | |||
::ALTER VIEW nom_vista RENAME TO nou_nom_vista; | |||
::ALTER VIEW nom_vista SET SCHEMA nou_eschema; | |||
::ALTER VIEW nom_vista OWNER TO nou_propietari; | |||
::DROP VIEW nom_vista [CASCADE|RESTRICT]; | |||
:Execució: | :Execució: | ||
:: | ::ALTER VIEW nom RENAME TO alumnes_i_curs | ||
===RULES=== | |||
:'''Crear RULE''' | |||
::Composició: | |||
:::CREATE RULE nom_rule AS {ON INSERT|ON UPDATE|ON DELETE|ON SELECT} TO nom_vista WHERE condicio_aplicacio DO INSTEAD(consulta1; consulta2; …); | |||
::Execució: | |||
:::CREATE VIEW clients_linies AS SELECT c.client_id, linia_id, nom, numero FROM client c INNER JOIN linies l ON c.client_id=l.client_id; | |||
:'''Crear RULE''' | |||
::: | ::Composició: | ||
:: | :::CREATE RULE nom_rule AS {ON INSERT|ON UPDATE|ON DELETE|ON SELECT} TO nom_vista WHERE condicio_aplicacio DO INSTEAD(consulta1; consulta2; …); | ||
::: | :::Sempre que creïs una rule has de crear una rule que digui que fer en cas que no complexi cap rule, no fer re. | ||
::::CREATE RULE nom_rule AS ON INSERT TO nom_vista DO INSTEAD NOTHING; | |||
: | ::Execució: | ||
:: | :::CREATE VIEW clients_linies AS SELECT c.client_id, linia_id, nom, numero FROM client c INNER JOIN linies l ON c.client_id=l.client_id; | ||
:: | :::CREATE RULE ins_clients_linies AS ON INSERT TO clients_linies WHERE NEW.client_id IS null DO INSTEAD(INSERT INTO clients (nom) VALUES (new.nom); INSERT INTO linies (client_id,numero) VALUES (currval(‘clients_seq’), NEW.numero);); | ||
: | :::CREATE RULE ins_clients_linies1 AS ON INSERT TO clients_linies WHERE NEW.client_id IS not null DO INSTEAD(INSERT INTO linies (client_id,numero) VALUES (NEW.client_id, NEW.numero);); | ||
:: | :::CREATE RULE ins_clients_linies2 AS ON INSERT TO clients_linies DO INSTEAD NOTHING; | ||
:'''Borrar RULE''' | |||
:Composició: | ::Composició: | ||
:: | :::DROP RULE nom_rule TO nom_vista; | ||
:Execució: | ::Execució: | ||
:: | :::DROP RULE ins_clients_linies TO clients_linies; |
Revisió de 11:36, 14 març 2021
Postgres
Crear VIsta
- Composició:
- CREATE VIEW nom_vista [(camp1, camp2...)] AS <sentència_select> [WITH [CASCADED| LOCAL] CHECK option];
- WITH CASCADED CHECK OPTION: Control de la integritat de les consultes de modificació per aquesta vista i les seves dependències amb d’altres cistes (verifica la clàusula WHERE de la vista)
- WITH LOCAL CHECK OPTION: Control de la integritat de les consultes de modificació només per aquesta vista (verifica la clàusula WHERE de la vista)
- Execució:
- CREATE VIEW nom AS SELECT a.nom, c.curs FROM alumnes a INNER JOIN curs c WHERE a.curs=c.id;
- Creem una vista a on surt el nom de l'alumne i el curs el qual esta apuntat.
Modificar Vista
- Composició:
- ALTER VIEW nom_vista [(camp1, camp2, …)] AS <sentència_select>;
- ALTER VIEW nom_vista ALTER [COLUMN] nom_columna SET DEFAULT expressió;
- ALTER VIEW nom_vista RENAME TO nou_nom_vista;
- ALTER VIEW nom_vista SET SCHEMA nou_eschema;
- ALTER VIEW nom_vista OWNER TO nou_propietari;
- DROP VIEW nom_vista [CASCADE|RESTRICT];
- Execució:
- ALTER VIEW nom RENAME TO alumnes_i_curs
RULES
- Crear RULE
- Composició:
- CREATE RULE nom_rule AS {ON INSERT|ON UPDATE|ON DELETE|ON SELECT} TO nom_vista WHERE condicio_aplicacio DO INSTEAD(consulta1; consulta2; …);
- Execució:
- CREATE VIEW clients_linies AS SELECT c.client_id, linia_id, nom, numero FROM client c INNER JOIN linies l ON c.client_id=l.client_id;
- Crear RULE
- Composició:
- CREATE RULE nom_rule AS {ON INSERT|ON UPDATE|ON DELETE|ON SELECT} TO nom_vista WHERE condicio_aplicacio DO INSTEAD(consulta1; consulta2; …);
- Sempre que creïs una rule has de crear una rule que digui que fer en cas que no complexi cap rule, no fer re.
- CREATE RULE nom_rule AS ON INSERT TO nom_vista DO INSTEAD NOTHING;
- Execució:
- CREATE VIEW clients_linies AS SELECT c.client_id, linia_id, nom, numero FROM client c INNER JOIN linies l ON c.client_id=l.client_id;
- CREATE RULE ins_clients_linies AS ON INSERT TO clients_linies WHERE NEW.client_id IS null DO INSTEAD(INSERT INTO clients (nom) VALUES (new.nom); INSERT INTO linies (client_id,numero) VALUES (currval(‘clients_seq’), NEW.numero););
- CREATE RULE ins_clients_linies1 AS ON INSERT TO clients_linies WHERE NEW.client_id IS not null DO INSTEAD(INSERT INTO linies (client_id,numero) VALUES (NEW.client_id, NEW.numero););
- CREATE RULE ins_clients_linies2 AS ON INSERT TO clients_linies DO INSTEAD NOTHING;
- Borrar RULE
- Composició:
- DROP RULE nom_rule TO nom_vista;
- Execució:
- DROP RULE ins_clients_linies TO clients_linies;