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

MS SQL Server Discussion :

[Access-SQL] ajout dans une vue


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    avril 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : avril 2007
    Messages : 14
    Points : 17
    Points
    17
    Par défaut [Access-SQL] ajout dans une vue
    bonjour voici mon problème...

    contexte simple:
    Deux tables reliées par une relation un plusieurs nommons la table A1(clé prim) et A2(clé secondaire)

    structure de ma vue:
    -ID --> A2 (liens entre les deux ID)
    -nomDossier --> A1
    -valeur1 -->A2
    -valeur2 --> A2

    je souhaite ajouter un enregistrement à ma vue et cela m'est impossible:
    je souhaite ajouter une valeur1 et une valeur2 avec un ID qui existe bien dans A1 et cela de fonctionne pas.
    (cela est sûrement impossible mais mon doute viens du faite que cette manipulation était possible sur access 97).
    merci *_*

    PS: lorsque la vue porte sur une seul table ajouter un enregistrement est possible (mais cela pert tous son intêret --> intégrité des données)

  2. #2
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    mai 2002
    Messages
    19 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 19 515
    Points : 46 178
    Points
    46 178
    Par défaut
    Une vue ne peut être mise à jour (INSERT, UPDATE, DELETE) que dans les conditions suivantes :
    1) ne comporter qu'une seule table
    2) ne pas comporter de transformation de données.

    En effet le point 1) est important car un ordre SQL de mise à jour (INSERT, UPDATE ou DELETE) ne peut porter que sur une seule table à la fois. Or si une insertion était possible dans une vue combinant deux tables le moteur relationnel ne saurait dans laquelle des deux table il faut insérer la ligne.

    Pour pallier à cet effet, vous pouvez au choix :
    a) utiliser une procédure stockée encapsulant une transaction
    b) utiliser un trigger INSTEAD OF sur la vue et déporter l'insertion dans chaque table, soit dans le corps du trigger, soit en apellant la procédure réalisée en a)

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  3. #3
    Membre à l'essai
    Inscrit en
    avril 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : avril 2007
    Messages : 14
    Points : 17
    Points
    17
    Par défaut
    merci... réponse parfaite..

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

Discussions similaires

  1. [projet ADP] ajout dans une vue
    Par guyzmot dans le forum Access
    Réponses: 0
    Dernier message: 20/02/2008, 15h51
  2. Réponses: 0
    Dernier message: 20/02/2008, 12h55
  3. [SQL] remplacer le VraiFaux d'access dans une Vue
    Par alain_27 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/09/2005, 16h51
  4. [SQL Server 2000] ajouter une colonne identité dans une vue?
    Par CetTer dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/08/2005, 14h43
  5. Paramètres possibles dans une vue ms sql server
    Par lutin2003 dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 30/03/2005, 20h03

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