Suite

Comment définir/mettre à jour des colonnes à l'aide d'un déclencheur ?

Comment définir/mettre à jour des colonnes à l'aide d'un déclencheur ?


Je souhaite définir/mettre à jour les attributs (alignment_horizontal, linear_vertical) d'une géométrie PostGIS (point) à l'aide d'un déclencheur.

CREATE TABLE point ( gid serial NOT NULL, geom geometry(point, SRID), label varchar(255), x_cord double precision, y_cord double precision, alignement_horizontal varchar(255), alignement_vertical varchar(255), CONTRAINTE point_pkey PRIMARY KEY (gid) ); CRÉER UN DÉCLENCHEUR label_alignment_trigger AVANT L'INSERTION OU LA MISE À JOUR SUR le point POUR CHAQUE RANGÉE EXÉCUTER LA PROCÉDURE label_alignment_triggerfn();

Existe-t-il un moyen de définir/mettre à jour deux colonnes dans une seule fonction de déclenchement ?

CRÉER OU REMPLACER LA FONCTION label_alignment_triggerfn() RETURNS trigger AS $body$ BEGIN NEW.alignment_horizontal := CASE WHEN degrés(ST_Azimuth(NEW.geom, ST_SetSRID(St_MakePoint(NEW.x_cord, NEW.y_cord), SRID))) < 22,5 THEN ' Centre' WHEN degrés(ST_Azimuth(NEW.geom, ST_SetSRID(St_MakePoint(NEW.x_cord, NEW.y_cord), SRID))) < 112,5 ALORS 'Gauche' WHEN degrés(ST_Azimuth(NEW.geom, ST_SetSRID(St_MakePoint(NEW.x_cord) , NEW.y_cord), SRID))) < 202,5 ​​THEN 'Center' WHEN degrés(ST_Azimuth(NEW.geom, ST_SetSRID(St_MakePoint(NEW.x_cord, NEW.y_cord), SRID))) < 292,5 THEN 'Right' WHEN degrés (ST_Azimuth(NEW.geom, ST_SetSRID(St_MakePoint(NEW.x_cord, NEW.y_cord), SRID))) >= 292,5 ALORS 'Centre' FIN ; NEW.alignment_vertical := CASE WHEN degrés(ST_Azimuth(NEW.geom, ST_SetSRID(St_MakePoint(NEW.x_cord, NEW.y_cord), SRID))) < 22,5 THEN 'Bas' WHEN degrés(ST_Azimuth(NEW.geom, ST_SetSRID(St_MakePoint (NEW.x_cord, NEW.y_cord), SRID))) < 112,5 ALORS 'Half' WHEN degrés(ST_Azimuth(NEW.geom, ST_SetSRID(St_MakePoint(NEW.x_cord, NEW.y_cord), SRID))) < 202,5 ​​ALORS ' Haut' WHEN degrés(ST_Azimuth(NEW.geom, ST_SetSRID(St_MakePoint(NEW.x_cord, NEW.y_cord), SRID))) < 292,5 THEN 'Half' WHEN degrés(ST_Azimuth(NEW.geom, ST_SetSRID(St_MakePoint(NEW.x_cord) , NEW.y_cord), SRID))) >= 292,5 ALORS 'Bottom' END; RETOUR NEUF ; FINIR; $body$ LANGUE plpgsql;

Modifier : fonction de déclenchement modifiée.


vous devez vous référer à chaque champ en tant que NEW.field_name

ex:

QUAND degré(ST_Azimut(NEW.geom, ST_Point(NEW.x_cord, NEW.y_cord))) < 22,5 ALORS 'Centre'

Voir la vidéo: Tutoriel Mikrotik en Français 5 - Renommer, définir un DNS et mettre à jour un routeur 2019