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

Développement SQL Server Discussion :

Bloquer une table sur une seule ligne de donnée


Sujet :

Développement SQL Server

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut Bloquer une table sur une seule ligne de donnée
    Bonjour Messieurs/Dames,
    J'ai une table sur MS SQL Server 2012 et j'aimerai gérer côté BD, l'enregistrement d'un nombre de ligne donné.
    En fait c'est une table paramètre qui n'évolue pas et le nombre de paramètre est connu.

    Vos avis.

  2. #2
    Invité
    Invité(e)
    Par défaut
    C'est pas totalement clair mais en gros, tu veux bloquer le changement de tes données sur une table particulière ?
    Si c'est ça, tu peux bloquer les droits de modifications au niveau de tes utilisateurs, c'est ce qui me semble le plus simple.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut
    Par exemple, ma table ne doit contenir qu'une seule ligne ou pas plus de 05 lignes.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SOPSOU Voir le message
    Par exemple, ma table ne doit contenir qu'une seule ligne ou pas plus de 05 lignes.
    Tu te rends compte que ces deux assertions sont contradictoires !

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut
    1) Je veux une table qui doit contenir au plus une ligne de donnée
    2) Une autre table qui elle ne doit pas excéder 5 lignes

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ok, c'est plus clair dit comme ça, merci.
    Je ferais un trigger pour gérer ça. Je ne sais pas s'il y a d'autres méthodes plus pertinentes d'ailleurs.

  7. #7
    Membre averti
    Avatar de taibag
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Inde

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 214
    Points : 357
    Points
    357
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Et une contrainte aussi permet de faire ça , genre CHECK (x BETWEEN 1 AND 5).
    मैं एक छात्र हूँ |

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par taibag Voir le message
    Et une contrainte aussi permet de faire ça , genre CHECK (x BETWEEN 1 AND 5).
    T'applique ça comment ?

  9. #9
    Membre averti
    Avatar de taibag
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Inde

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2013
    Messages : 214
    Points : 357
    Points
    357
    Billets dans le blog
    1
    Par défaut
    Comme ça par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE TableTest (Col INT NOT NULL UNIQUE CHECK (Col BETWEEN 1 AND 5));
    मैं एक छात्र हूँ |

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 741
    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 741
    Points : 52 454
    Points
    52 454
    Billets dans le blog
    5
    Par défaut
    Le moyen le plus simple pour fixer la cardinalité maximale d'une table est de faire une double contrainte sur une colonne entière :
    1) la rendre unique (PRIMARY KEY)
    2) limiter sa valeur (CHECK)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE TABLE T
    (PK SMALLINT PRIMARY KEY CHECK(PK BETWEEN 1 AND 5),
    ...
    )
    Il existe d'autres moyens moins performants...

    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/ * * * * *

  11. #11
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut
    Merci à tous d'avoir pris de votre temps pour cogiter à ça.
    Avec vos propositions, je vois comment le faire avec les contraintes.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Le moyen le plus simple pour fixer la cardinalité maximale d'une table est de faire une double contrainte sur une colonne entière :
    1) la rendre unique (PRIMARY KEY)
    2) limiter sa valeur (CHECK)
    Effectivement, c'est trop simple, je n'avais pas penser à ça !

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

Discussions similaires

  1. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 13h58
  2. copier une table d'une BDD dans une table d'une autre BDD
    Par faniette dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/05/2013, 11h17
  3. Réponses: 7
    Dernier message: 25/03/2011, 11h52
  4. [AC-2003] insert des données d'une table dans une table d'une base externe
    Par marieo dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/11/2009, 15h29
  5. Copier les enregistrements d'une table vers une table d'une autre DB
    Par karinette21 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/11/2008, 22h50

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