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

Langage SQL Discussion :

vues et contraintes


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 16
    Points : 8
    Points
    8
    Par défaut vues et contraintes
    Bonjour,

    Ma question peut sembler idiote mais je ne trouve pas la réponse :

    Une vue ne possède pas de clé primaire : vrai ou faux ? Est-ce que l'affirmation contraire est abérante ? Si oui, pourquoi ?

    Merci à tous.

  2. #2
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Une vue n'est que le résultat d'une requete. Les données visualisées ne sont pas modifiables directement. Donc la notion de clé primaire pour une vue est inutile. Ceci dit, tu peux y inserer les différentes clés primaires qui te seront utiles pour d'eventuelles modifications (dans les tables et non dans les vues) directement dans ta requete de creation de vue
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    ok j'ai bien compris.
    super, je te remercie (:

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 735
    Points
    52 735
    Billets dans le blog
    5
    Par défaut
    Les données visualisées ne sont pas modifiables directement.
    FAUX !!!!

    Démonstration :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    CREATE TABLE T_PAYS
    (PAYS_ID     INT NOT NULL PRIMARY KEY,
     PAYS_NOM    VARCHAR(32),
     PAYS_LANGUE VARCHAR(16))
     
    INSERT INTO T_PAYS VALUES (1, 'France', 'Français')
    INSERT INTO T_PAYS VALUES (2, 'Belgique', 'Français')
    INSERT INTO T_PAYS VALUES (3, 'Italie', 'Italien')
     
    SELECT * FROM T_PAYS
     
    PAYS_ID     PAYS_NOM                         PAYS_LANGUE      
    ----------- -------------------------------- ---------------- 
    1           France                           Français
    2           Belgique                         Français
    3           Italie                           Italien
     
     
    CREATE VIEW V_PAYS_FRANCOPHONES
    AS
    SELECT PAYS_ID, PAYS_NOM, PAYS_LANGUE
    FROM   T_PAYS
    WHERE  PAYS_LANGUE = 'Français'
     
    SELECT * FROM V_PAYS_FRANCOPHONES
     
    PAYS_ID     PAYS_NOM                         PAYS_LANGUE      
    ----------- -------------------------------- ---------------- 
    1           France                           Français
    2           Belgique                         Français
     
    INSERT INTO V_PAYS_FRANCOPHONES VALUES (4, 'Espagne', 'Espagnol')
     
    SELECT * FROM T_PAYS
     
    PAYS_ID     PAYS_NOM                         PAYS_LANGUE      
    ----------- -------------------------------- ---------------- 
    1           France                           Français
    2           Belgique                         Français
    3           Italie                           Italien
    4           Espagne                          Espagnol
     
    SELECT * FROM V_PAYS_FRANCOPHONES
     
    PAYS_ID     PAYS_NOM                         PAYS_LANGUE      
    ----------- -------------------------------- ---------------- 
    1           France                           Français
    2           Belgique                         Français
     
    INSERT INTO V_PAYS_FRANCOPHONES VALUES (5, 'Suisse', 'Français')
     
    SELECT * FROM T_PAYS
     
    PAYS_ID     PAYS_NOM                         PAYS_LANGUE      
    ----------- -------------------------------- ---------------- 
    1           France                           Français
    2           Belgique                         Français
    3           Italie                           Italien
    4           Espagne                          Espagnol
    5           Suisse                           Français
     
    SELECT * FROM V_PAYS_FRANCOPHONES
     
    PAYS_ID     PAYS_NOM                         PAYS_LANGUE      
    ----------- -------------------------------- ---------------- 
    1           France                           Français
    2           Belgique                         Français
    5           Suisse                           Français
     
    UPDATE V_PAYS_FRANCOPHONES
    SET    PAYS_LANGUE = 'Allemand'
    WHERE  PAYS_ID = 5
     
    SELECT * FROM T_PAYS
     
    PAYS_ID     PAYS_NOM                         PAYS_LANGUE      
    ----------- -------------------------------- ---------------- 
    1           France                           Français
    2           Belgique                         Français
    3           Italie                           Italien
    4           Espagne                          Espagnol
    5           Suisse                           Allemand
     
    SELECT * FROM V_PAYS_FRANCOPHONES
     
    PAYS_ID     PAYS_NOM                         PAYS_LANGUE      
    ----------- -------------------------------- ---------------- 
    1           France                           Français
    2           Belgique                         Français
    Lisez l'article que j'ai écrit sur le sujet :
    http://sqlpro.developpez.com/cours/s...age=partie2#L8

    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...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Ca depend des Serveurs SGBD (postGreSQL ne l'autorise pas sans création de règles), avec des contraintes super fortes pour la pluspart (qui s'apparente plus a des alias de tables). Mais effectivement dans des cas super precis on peut le faire. Cependant dans tous les cas, ce sont les contraintes affectées a la table qui sont utilisés, les verrous sont posés sur la table et non sur la vue.
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/12/2011, 11h55
  2. contrainte cle etrangere et Vue ?
    Par italiasky dans le forum Développement
    Réponses: 5
    Dernier message: 29/03/2010, 16h57
  3. Réponses: 2
    Dernier message: 15/01/2009, 10h26
  4. pb vue sur contrainte d'une table donnée
    Par bb5477 dans le forum SQL
    Réponses: 7
    Dernier message: 11/01/2008, 15h47
  5. [Oracle 9i]Vue et contraintes
    Par MasterOfChakhaL dans le forum Oracle
    Réponses: 3
    Dernier message: 04/07/2007, 09h15

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