Bonjour
J'essaie de detecter/tracer les creations/suppressions de tables et/ou attributs au sein d'une BD (en l'occurence Oracle pour commencer).
Par example je veux savoir les tables et attributs qui ont été créée par SCOTT et sachant cette information je doit declencher un évènement quelconque.
Le problem c'est qu'apparement les seul triggers possibles sur les vues (user_tables pour celle qui me concerne) sont des 'instead of' alors que je voudrais un 'after'.
Donc ayant les droits administrateur sur ma base j'ai ete voir le code de cration de la vue user_tables.
Apparement les donnees de la vue user_tables sont issues, en partie, de la table obj$ appartenant à SYS (ca tombe bien c'est moi).
Donc j'ai fais un trigger
où owner#= 59 correspond à SCOTT et type#=2 correspond à une TABLE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 create trigger update_scott_table_list after insert on obj$ for each row begin if owner#=59 || type#=2 insert into scott.table_list values (:new.name); end;
scott.table_list une table que j'ai crée contenant le nom de la table
Sauf que Oracle me dit ORA-04089 cannot create triggers on objects owned by SYS
Ma question est il possible de contourner Ora-04089 si oui comment pourrais je faire sinon comment pourrais je faire pour mettre à jour ma table table_list quand une table est créée ?
Encore une fois un grand merci pour votre aide.
Partager