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 :

[debutant]insert into view


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    61
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 61
    Par défaut [debutant]insert into view
    Bonjour à tous,

    Voilà j'essaye d'insérer une ligne dans une vue et n'y arrivant pas je me demandais si c'était bien possible?

    Je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into vue_test2 ("nom", "prenom", "test1_id", "id", "adresse") values (toto, bob, 6,6, lourde)
    et ai l'erreur 11:22:37 [INSERT - 0 row(s), 0.005 secs] [Error Code: 984, SQL State: 42000] ORA-00984: Un nom de colonne n'est pas autorisé ici
    ... 1 statement(s) executed, 0 row(s) affected, database exec time 0.005 sec [0 successful, 0 warnings, 1 errors]

    Merci de votre aide
    seb

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    c'est impossible de faire une insertion dans une vue qui contient plus d'une table. Ou alors en passant par un trigger INSTEAD OF qui va faire la mise en jour dans les tables qui vont bien

  3. #3
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Tes chaînes de caractères doivent être entre simple côtes
    exemple : 'toto'

  4. #4
    Membre Expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Par défaut
    Bonjour,

    1. On ne peut pas faire des insertions ou des mises à jours dans une Vue
    2. remplace ("nom", "prenom", "test1_id", "id", "adresse")
    par (nom, prenom, test1_id, id, adresse)

  5. #5
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Citation Envoyé par bouyao
    1. On ne peut pas faire des insertions ou des mises à jours dans une Vue
    Pas d'accord :
    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
    SQL> create table a (a number);
    Table created.
     
    SQL> insert into a values (1);
    1 row created.
     
    SQL> create view v as select a from a;
    View created.
     
    SQL> insert into v values (2);
    1 row created.
     
    SQL> select * from v;
            A
    ---------
            1
            2

  6. #6
    Membre Expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Par défaut
    Ok
    et pour une vue contenant plusieurs tables ?

  7. #7
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Citation Envoyé par bouyao
    Ok
    et pour une vue contenant plusieurs tables ?
    Via un trigger instead off, comme l'a dit Fred

  8. #8
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Pour moi cela n'a rien avoir au fait qu'il s'agisse d'une vue :
    ORA-00984: column not allowed here
    Cause: A column name was used in an expression where it is not permitted, such as in the VALUES clause of an INSERT statement.
    Action: Check the syntax of the statement and use column names only where appropriate
    Pour moi la bonne syntaxe est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    insert into vue_test2 (nom, prenom, test1_id, id, adresse) 
    values ('toto', 'bob', 6,6, 'lourde');
    Qu'est-ce que cela donne sous SQL*Plus ?

  9. #9
    Membre Expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Par défaut
    Citation Envoyé par plaineR
    Via un trigger instead off, comme l'a dit Fred

    Par contre Dans certains cas on peut modifier une vue qui contient plusieurs tables.
    A modifiable join view is a view that contains more than one table in the top
    level FROM clause of the SELECT statement, and that does not contain any of
    the following:

    - DISTINCT operator
    - aggregate functions: AVG, COUNT, GLB, MAX, MIN, STDDEV, SUM, or VARIANCE
    - set operations: UNION, UNION ALL, INTERSECT, MINUS
    - GROUP BY or HAVING clauses
    - START WITH or CONNECT BY clauses
    - ROWNUM pseudocolumn

    With some restrictions, you can modify views that involve joins. If a view is
    a join on other nested views, then the other nested views must be mergeable
    into the top level view.

  10. #10
    Membre confirmé
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    61
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 61
    Par défaut
    Merci pour vos réponses. Pour les ", ' , , j'ai tout essayé l'erreur reste la même.
    Sinon j'ai effectivement fait le trigger suivant :
    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
    create or replace trigger tr_test3 instead of insert on vue_test2
    begin 
        insert into test1
            (id, adresse)
            values (
                :new.test1_id
                :new.adresse);
        insert into test2
            (id, nom, prenom, test1_id)
            values (
                :new.id
                :new.nom,
                :new.prenom,
                :new.test1_id);
    end;
    Et j'esperais qu'en insérant une ligne dans la vue la table test1 et test2 soient mises à jour

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

Discussions similaires

  1. [debutant] commande "insert into " en VB.NET
    Par Hello_World dans le forum ASP.NET
    Réponses: 2
    Dernier message: 19/04/2009, 01h30
  2. [debutant]insert into select
    Par christopheEU dans le forum Développement
    Réponses: 2
    Dernier message: 14/11/2008, 10h22
  3. [MySQL][Debutant] "unknow field" avec "INSERT INTO"
    Par L3gion dans le forum Langage SQL
    Réponses: 8
    Dernier message: 12/12/2006, 11h15
  4. [VB.NET]Utiliser un INSERT INTO avec une VIew Access
    Par Ashleyriot dans le forum Accès aux données
    Réponses: 3
    Dernier message: 23/11/2006, 18h31
  5. Réponses: 18
    Dernier message: 01/10/2006, 19h17

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