Bonjour a tous,
Merci à tous ceux qui liront ce post et qui proposeront une solution.
Je voudrais créer un trigger que j’exécuterais avant l'insertion dans ma table, pour vérifier si un nom n'est pas déjà présent et si c'est le cas il rajoute un "(*)" à la chaine de caractère avant de procéder à l'insertion de celle-ci.
Voici la table en question :
J'avais une petite idée mais cela ne fonctionne pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 -- Table: objet -- DROP TABLE objet; CREATE TABLE objet ( id serial NOT NULL, nom character varying(10) NOT NULL, CONSTRAINT objet_pkey PRIMARY KEY (nom), CONSTRAINT objet_id_key UNIQUE (id) ) WITH ( OIDS=FALSE ); ALTER TABLE objet OWNER TO postgres;
le select Exists le renvoie une erreur sous postgresql :/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 CREATE OR REPLACE FUNCTION verifierInsertionObjet() RETURNS trigger AS $BODY$ BEGIN DECLARE existe INTEGER; -- On verifie si le nom de l'objet existe deja dans la table objet SELECT EXISTS( SELECT * FROM objet where nom = NEW.nom ) INTO existe; -- On traite le nom si il y a deja existance dans la table IF existe THEN NEW.nom = NEW.nom+"(*)"; END IF; RETURN NEW; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION decrementernbobjet() OWNER TO postgres;
Merci beaucoup pour votre aide.
Partager