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 :

Vue sur une table : transaction possible ?


Sujet :

Oracle

  1. #1
    Membre régulier Avatar de wwave
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Points : 84
    Points
    84
    Par défaut Vue sur une table : transaction possible ?
    Bonjour,

    J'ai la table suivante :
    OBJET (ID clé primaire, NOM, TYPE_ID clé étrangère, COULEUR_ID clé étrangère)
    Les tables TYPE et COULEUR contiennent un identifiant et un nom.

    Je voudrais faire une vue qui prendrait les noms au lieu des clés étrangères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE VIEW Vue_Objet
    (nom_objet,nom_type,nom_couleur)
    AS SELECT objet.nom, type.nom, couleur.nom
    FROM objet, type, couleur
    WHERE objet.type_id= type.id
    AND objet.couleur_id = couleur.id
    Ensuite, est ce que je peux faire des transactions directement sur la vue : modification, insertion, suppression ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO Vue_Objet (nom_objet,nom_type,nom_couleur) VALUES ("bol","cuisine","bleu");
    DELETE FROM Vue_Objet where nom_objet="fourchette"; 
    UPDATE Vue_Objet set nom_objet = "couteau" where nom_objet = "fourchette"
    Merci de votre aide.

    WwAvE

  2. #2
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Avec un trigger Instead Off c'est possible.
    Voilà un petit extrait de la documentation Oracle (Oracle Concepts 11g) sur les vues modifiables
    ...
    An updatable join view, also called a modifiable join view, involves two or more base tables or views and permits DML operations. An updatable view contains multiple tables in the top-level FROM clause of the SELECT statement and is not restricted by the WITH READ ONLY clause.
    To be inherently updatable, a view must meet several criteria. For example, a general rule is that an INSERT, UPDATE, or DELETE operation on a join view can modify only one underlying base table at a time.
    ...

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    instead of, avec un seul F

  4. #4
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par orafrance Voir le message
    instead of, avec un seul F
    Oui c'est ça. Merci.

  5. #5
    Membre régulier Avatar de wwave
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Points : 84
    Points
    84
    Par défaut
    Bonjour,

    Je ré-ouvre ce message car en mettant mieux en pratique ma vue modifiable, j'ai une erreur et je n'arrive vraiment pas à savoir pourquoi.

    Alors j'ai une table principale qui contient en clés étrangères les identifiants d'autres tables (dont la structure est toujours id et libellé).
    Je souhaite faire une vue au dessus afin de ne présenter que le libellé de chaque table jointe.
    La création de cette vue est OK.

    J'essaie un trigger instead of insert mais lorsque je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    show errors trigger dml_dod
    J'ai l'erreur :
    PL/SQL: ORA-00923: mot-clé FROM absent à l'emplacement prévu
    Voilà mon trigger :
    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
    CREATE OR REPLACE TRIGGER DML_DOD
      instead of insert 
      on dod_view
      for each row
    begin
        insert into dod 
        select seq_dod_id.nextval, :new.date_besoin, :new.date_recueil, :new.date_fourniture, 
        :new.nom_operation, :new.nom_zone, :new.origine_besoin, :new.geom
        dod_etat.id, dod_priorite.id, etat_crise.id, implication_nationale.id, interet_national.id, 
        sensibilite.id, systeme_arme.id, type_implication.id, type_intervention.id, utilisateur.id
        from dod_etat, dod_priorite, etat_crise, implication_nationale, interet_national, sensibilite, 
        systeme_arme, type_implication, type_intervention, utilisateur
        where dod_etat.libelle = :new.dod_etat_libelle AND 
        etat_crise.libelle = :new.etat_crise_libelle AND
        implication_nationale.libelle = :new.implication_nationale_libelle AND
        interet_national.libelle = :new.interet_national_libelle AND
        sensibilite.libelle = :new.sensibilite_libelle AND
        systeme_arme.libelle = :new.systeme_arme_libelle AND
        type_implication.libelle = :new.type_implication_libelle AND
        type_intervention.libelle = :new.type_intervention_libelle AND
        dod_priorite.libelle = :new.dod_priorite_libelle AND
    	utilisateur.login = :new.utilisateur_login;
    end ;
    J'ai essayé aussi en précisant les noms des colonnes de la table dod (insert into dod(id, date_besoin, etc.)).

    Merci de votre aide !
    WwAvE

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Il manque une virgule après :new.geom

  7. #7
    Membre régulier Avatar de wwave
    Inscrit en
    Avril 2004
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Avril 2004
    Messages : 190
    Points : 84
    Points
    84
    Par défaut
    Oh la honte... en plus ça fait 3h que je suis dessus...
    Merci beaucoup ! ça aide souvent d'avoir une vision extérieure !
    Merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Est-il possible de lister les vues d'une table ?
    Par guidav dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 07/02/2019, 07h21
  2. Vue sur 3 tables : transaction possible ?
    Par wwave dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/11/2009, 11h07
  3. [CR 8] Est-il possible de gérer les droits sur une table de la base
    Par foulla dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 06/01/2009, 15h16
  4. Réponses: 6
    Dernier message: 12/02/2008, 14h58
  5. Créer une vue utf-8 sur une table iso
    Par bankette dans le forum Requêtes
    Réponses: 1
    Dernier message: 13/09/2007, 10h51

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