formation-postgis
formation-postgis copied to clipboard
Exemple trigger avec RAISE
-- Contrôle de la géométrie
-- qui doit être dans le Gard
-- On crée une fonction générique qui pourra s'appliquer pour toutes les couches
CREATE OR REPLACE FUNCTION z_formation.validation_geometrie_dans_gard()
RETURNS TRIGGER AS $limite$
BEGIN
-- On vérifie l'intersection avec le département, on renvoit une erreur si souci
IF NOT ST_Intersects(
NEW.geom,
(SELECT geom FROM admin.gard_bc LIMIT 1)
) THEN
-- On renvoit une erreur
RAISE EXCEPTION 'La géométrie doit se trouver dans le Gard';
END IF;
RAISE NOTICE 'Message de type NOTICE';
RETURN NEW;
END;
$limite$
LANGUAGE plpgsql;
-- On l'applique sur la couches des collèges
CREATE TRIGGER trg_validation_geometrie_dans_gard
BEFORE INSERT OR UPDATE ON z_formation.colleges_gard
FOR EACH ROW EXECUTE PROCEDURE z_formation.validation_geometrie_dans_gard();
et j'ajoute un autre premier exemple courant, à mettre au dessus
Les triggers
Principes
todo
Examples
Modification de certains champs de manière automatique après ajout ou modification
-- TRIGGERS
-- Modification de certains champs après ajout ou modification
-- Créer les champs dans la table
ALTER TABLE z_formation.une_table ADD COLUMN modif_date date;
ALTER TABLE z_formation.une_table ADD COLUMN modif_user text;
-- Créer la fonction qui sera lancée sur modif ou ajout de données
CREATE OR REPLACE FUNCTION z_formation.ajout_metadonnees_modification()
RETURNS TRIGGER AS $limite$
BEGIN
NEW.modif_date = now();
NEW.modif_user = CURRENT_USER;
RETURN NEW;
END;
$limite$
LANGUAGE plpgsql
;
-- Dire à PostgreSQL d'écouter les modifications et ajouts sur la table
CREATE TRIGGER trg_ajout_metadonnees_modification
BEFORE INSERT OR UPDATE ON z_formation.astech_bat
FOR EACH ROW EXECUTE PROCEDURE z_formation.ajout_metadonnees_modification();