x
1
DECLARE
2
idvoie integer;
3
adrvoie text;
4
BEGIN
5
-- Récupération de l'identifiant de la voie dévérouillée la plus proche
6
SELECT adresse.get_id_voie(NEW.geom) into idvoie;
7
8
-- Si aucune voie dévérouillée proche mais qu'un identifiant de voie est fourni
9
-- on le garde la voie
10
IF idvoie is NULL AND NEW.id_voie IS NOT NULL THEN
11
idvoie:= NEW.id_voie;
12
END IF;
13
14
IF idvoie IS NOT NULL THEN
15
-- Si l'identifiant de voies est non null
16
IF NOT (SELECT adresse.num_exists(NEW.numero, NEW.suffixe, idvoie)) THEN
17
-- Si l'adresse n'existe pas déjà on enregistre et modififie le nom complet
18
NEW.id_voie = idvoie;
19
SELECT nom_complet into adrvoie FROM adresse.voie WHERE id_voie = idvoie;
20
IF NEW.suffixe IS NOT NULL THEN
21
NEW.adresse_complete = CONCAT(NEW.numero, ' ', NEW.suffixe, ' ', adrvoie);
22
ELSE
23
NEW.adresse_complete = CONCAT(NEW.numero, ' ', adrvoie);
24
END IF;
25
RETURN NEW;
26
ELSE
27
-- Sinon enregistrement impossible
28
RETURN NULL;
29
END IF;
30
ELSE
31
-- Sinon on modifie valide et on enregistre
32
NEW.valide = False;
33
RETURN NEW;
34
END IF;
35
END;
36