Bonjour,

je tente de donner des droits à un rôle et à un utilisateur sur un objet (table ou vue) d'un schéma tiers dès que celui-ci est créé. J'ai tenté le trigger ci-dessous (créé à partir d'un post trouvé sur developpez.com) mais ça ne fonctionne pas quand je crée une table de TEST dans le schéma DEPLACEMENTS.

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
22
23
24
25
26
27
28
29
30
CREATE TRIGGER deplacements_tgr
AFTER create
ON SCHEMA
 
DECLARE
  	CURSOR C_TABLE IS
    		SELECT TABLE_NAME
    		FROM ALL_TABLES
    		WHERE OWNER = 'DEPLACEMENTS';
	CURSOR C_VIEW IS
    		SELECT VIEW_NAME
    		FROM ALL_VIEWS
    		WHERE OWNER = 'DEPLACEMENTS';
 	req STRING(200);
	req2 STRING(200);
BEGIN
 
  	FOR CUR IN C_TABLE LOOP
		req := 'GRANT SELECT ON DEPLACEMENTS.' || CUR.TABLE_NAME || ' TO DEPLACEMENTS_CONSULT';
		req2 := 'GRANT SELECT,INSERT,UPDATE,DELETE ON DEPLACEMENTS.' || CUR.TABLE_NAME || ' TO DEPLACEMENTS_MAJ';
    		execute immediate (req);
		execute immediate (req2);
	FOR CUR IN C_VIEW LOOP
		req := 'GRANT SELECT ON DEPLACEMENTS.' || CUR.VIEW_NAME || ' TO DEPLACEMENTS_CONSULT';
		req2 := 'GRANT SELECT ON DEPLACEMENTS.' || CUR.VIEW_NAME || ' TO DEPLACEMENTS_MAJ';
    		execute immediate (req);
		execute immediate (req2);
  	END LOOP;
END;
/
Autre question : comment peut-on contrôler l'exécution ou non du trigger (un mode debug en quelque sorte svp) ?

EDIT : le trigger est créé dans le schéma DEPLACEMENTS

Merci d'avance pour vos réponses

(ORACLE 10.2.0.3)