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 :

Est-il possible de créer des tables avec des lignes identiques ?


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 111
    Points : 63
    Points
    63
    Par défaut Est-il possible de créer des tables avec des lignes identiques ?
    Bonjour,

    Surtout n'essayez pas de comprendre mes raisons pour lesquelles j'en suis arriver là (à faire une table sans clé primaire). Le problème la suivante :
    j'ai une table SQL "Erreur" sans clé primaire et toutes les colonnes sont non obligatoire:
    nom : varchar(10);
    type : varchar(10);
    date : datetime ;

    j'arrive à insérer manuellement:
    op1;application;01/01/2009
    op1;application;01/01/2009
    op1;exécution;01/01/2009

    mais quand j'essaie de le modifier manuellement :
    op1;application;01/01/2009
    op1;application;01/01/2009 => op1;application;01/01/2009 => Erreur (*)
    op1;exécution;01/01/2009

    (*) : les valeurs de la ligne mise à jour ne rendent pas la ligne unique ou modifient plusieurs lignes (2 lignes)
    Etant donné que je n'ai pas mis de clé primaire, ca doit être une erreur de la deuxième hypothèse, mais dans ce cas, SQL serveur s'attend à ce que toutes les lignes d'une table soit unique malgré que l'on est pas demandé alors ? donc la ligne entière devient clé primaire par défaut. Je suis pas sûr d'être clair.

    Connaissez vous les règles SQL Server sur ce point ?
    Egalement, pour ce test je l'ai fait manuellement, mais en prodution, tout sera géré par des scripts. Et je me demande si cela va planter si je ne créé pas une nouvelle colonne avec une clé primaire.
    Ah mince, je viens de remarquer qu'en créant cette table à la main depuis SQL server, on n'a plus le problème. Mais si on génère la table depuis un script ca pose problème.

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    Pour l'insertion vous n'aurez pas le problème.

    Mais comment ferez vous par script pour mettre à jour ou supprimer une ligne qui n'est pas unique ?

    Si je prends votre jeu de résultat

    op1;application;01/01/2009
    op1;application;01/01/2009



    Prenez une instruction UPDATE par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE Erreur
    SET date = ...
    WHERE quoi ?
    Pour mettre à jour une ligne de votre application il vous faut bien la différencier ...

    Une solution simple est de rendre vos lignes uniques avec une colonne auto-incrémentée par exemple.

    ++

  3. #3
    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 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    Et donc, d'y rajouter une Primary Key, ce qui permettra d'aller beaucoup plus vite pour retrouver la ligne à mettre à jour.
    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/ * * * * *

Discussions similaires

  1. Réponses: 4
    Dernier message: 23/07/2010, 23h06
  2. [AC-2007] Créer un enregistrement avec des tables liées sur SQL Server
    Par NEfanda dans le forum Access
    Réponses: 2
    Dernier message: 29/04/2010, 19h31
  3. créer une table avec des colonnes de types différents
    Par d_hazem dans le forum Composants
    Réponses: 1
    Dernier message: 15/01/2009, 15h23
  4. Réponses: 8
    Dernier message: 23/01/2008, 09h05
  5. Réponses: 3
    Dernier message: 17/12/2007, 10h58

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