Bonjour
je cherche a faire un trigger qui me permet de tranquer tous les champs de type texte dans ma base en cas ou le donnée a insérer dépassent la langueur max du champs , du coup j'ai créer une vue qui me retourne ces champs texte
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 CREATE OR REPLACE VIEW my_view AS SELECT c.column_name, c.data_type, c.character_maximum_length FROM information_schema.tables t JOIN information_schema.columns c ON t.table_name::text = c.table_name::text WHERE t.table_schema::text = 'public'::text AND c.data_type::text = 'character varying'::text; ALTER TABLE my_view OWNER TO postgres;
et puis j'ai créer cette fonction substring de mon trigger mais je sais pas si je suis dans le bon chemin
Code sql : 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 CREATE OR REPLACE FUNCTION trancage() RETURNS trigger AS $BODY$ begin RAISE NOTICE 'START'; NEW.column_name=substring (NEW.column_name for CHAR_LENGTH(column_name)); RAISE NOTICE 'la valeur tronquée est %', NEW.column_name; return NEW; end; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION trancage_automatique() OWNER TO postgres; CREATE TRIGGER trigger BEFORE INSERT OR UPDATE ON ma_vue FOR EACH STATEMENT EXECUTE PROCEDURE trancage();
avez vous une idée dans ce propos?
Partager