Bonjour,


Sauriez-vous comment faire l'équivalent des commandes en rouge sans avoir besoin des droits admin ? (a priori, j'ai un utilisateur ayant un grant all sur sa base de données)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
update pg_class set reltriggers=0 
   where relname like 'message_%' and relname not like '%_view' and relname not like '%_key';
\copy blabla from 'test.csv' delimiter ';' csv
select ModifTrigger();
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
 
CREATE FUNCTION ModifTrigger()
RETURNS void AS $$
DECLARE r record;
BEGIN
	FOR r IN
		select relname,count(*) from pg_class, pg_trigger 
			where pg_class.oid=tgrelid and relname like 'message_%' 
			and relname not like '%_view' and relname not like '%_key' 
			group by relname
	LOOP
		RAISE NOTICE '% : %', r.relname, r.count;
		update pg_class set reltriggers=r.count where relname=r.relname;
	END LOOP;
END;
$$
LANGUAGE plpgsql;

A priori, cette manip me fait passer mon import de 63min à 45min, mais je ne pourrais pas être root sur la vraie machine de prod. Il faut donc un équivalent ou la configuration nécessaire (permission à ajouter ?) pour avoir droit de faire un tel update sans être root

nb: Je suis en version 8.3 (mais les infos sur les versions suivantes m'intéressent aussi)

par avance