IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

[9i] Trigger DDL


Sujet :

Oracle

  1. #1
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut [9i] Trigger DDL
    Bonjour!

    Je cherche à réaliser un trigger sur la création d'une table. Il s'agit, lorsqu'une table est créée dans un schéma donné, d'attribuer les droits de SELECT à un autre utilisateur sur la table qui vient d'être créé et de faire un sysnonyme de cette table.

    Je sais que les trigger sur ordre DDL sont tout à fait possible, mais je bloque sur la syntaxe.

    Voilà le début du code:
    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
     
    CREATE OR REPLACE TRIGGER trigg_montrig
    AFTER CREATE 
    ON SCHEMA1
    DECLARE
     x user_tables.table_name%TYPE; 
    BEGIN
      SELECT ora_dict_obj_name
      INTO x
      FROM dual;
     
      CREATE OR REPLACE SYNONYM SCHEMA2.x FOR SCHEMA1.x;
      GRANT SELECT ON SCHEMA1.x TO SCHEMA2;
    END;

    Bien entendu, ça ne fonctionne pas sous cette forme. Comment utiliser le contenu de la variable x pour executer le CREATE SYNONYM ou le GRANT?



    PS : ma source pour le moment : http://www.psoug.org/reference/ddl_trigger.html

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    recherche EXECUTE IMMEDIATE

  3. #3
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par Fred_D
    recherche EXECUTE IMMEDIATE


    Est-ce que ce que je cherche à faire (un grant et un synonyme sur un trigger DDL) est faisable/autorisé sur une base Oracle?

  4. #4
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    oui, personnellement, je ne trouve pas ça super mais c'est faisable

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2005
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 37
    Points : 25
    Points
    25
    Par défaut
    Bonjour,
    J'ai été confronté à un problème similaire (sauf que je ne voulais pas créer de synonyme) en Oracle 8.1.7, mais sans trouver de solutions.
    Ci-joint les 2 liens concernant ce problème.

    http://www.developpez.net/forums/sho...ferrerid=76920

    http://www.developpez.net/forums/sho...ferrerid=76920

    il y avait notamment une finesse non négligeable sur la portée du triggers (on DATABASE ou on SCHEMA).
    Mais peut être que des améliorations ont été apportées en V9...

  6. #6
    Expert éminent

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Points : 7 641
    Points
    7 641
    Par défaut
    Citation Envoyé par Pedrassi
    Bonjour,
    J'ai été confronté à un problème similaire (sauf que je ne voulais pas créer de synonyme) en Oracle 8.1.7, mais sans trouver de solutions.
    Pour la version sans synonyme, j'y suis arrivé assez solidement, en utilisant ceci:
    http://asktom.oracle.com/pls/ask/f?p...9980506::NO:::

    Ce qui m'étonne ce qu'il faut l'affecter au schema1 (là ou ont lieu les créations) et non à SYSTEM, sinon, ça ne marche pas....
    Pour la création des synonymes, pour le moment, il faut aussi le faire dans schema1 et comme le synonyme doit être créé dans schéma2, j'ai du faire un grant create any synonym, ce qui est pas terrible comme solution.

    Mais je suis toujours à la recherche d'une solution plus satisfaisante à ce problème....

Discussions similaires

  1. triggers DDL DDL
    Par haykelFST dans le forum Développement
    Réponses: 1
    Dernier message: 25/11/2008, 16h12
  2. Trigger DDL after alter or create
    Par fatsora dans le forum Administration
    Réponses: 5
    Dernier message: 11/03/2008, 13h20
  3. [SQL2K5]Trigger DDL pour tracer DML utilisateur
    Par elsuket dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 13/09/2007, 06h43
  4. [SQLK][Trigger DDL]Ne pas montrer de message d'erreur
    Par elsuket dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 10/08/2007, 08h53
  5. [SQL Server 2005]Trigger DDL -> Nom Table Modifiée
    Par Yotho dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/06/2007, 12h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo