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

MS SQL Server Discussion :

Utiliser UniqueIdentifier dans une relation


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 90
    Par défaut Utiliser UniqueIdentifier dans une relation
    Bonjour à tous !

    Je découvre SQL server Express et Studio Management Express : de très bons outils à priori... sauf que lorsque je recherche à créer une relation entre 2 tables ou la clé primaire est GUID, la relation est refusée car le type de données n'est pas le même.
    En effet dans l'autre table je ne peux faire que BigInt avec une taille de 8bits et le GUID demande 16bits.

    Quelqu'un a-t-il une solution ?

    Bonne journée !

  2. #2
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Bonjour,

    bigint 8 bytes ? As-tu simplement essayé le type de données uniqueidentifier ? Autrement tu devrais pouvoir le stocker en binary(16)

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 90
    Par défaut
    Merci pour ta réponse.

    J'ai essayé avec binary(16) mais la même erreur de type s'affiche.

    Je cherche à créer une relation entre 2 tables : la première avec la clé primaire en UniqueIdentifier et sur la deuxième une colonne qui n'est pas la clé primaire : quel type de donnée dois-je choisir pour cette 2ème table ?

    Note: Je dois mal m'y prendre mais je n'arrive pas par MSDN à trouver un résumé des types de données !!!

  4. #4
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    uniqueidentifier ...
    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 TABLE #tmp (
    	one uniqueidentifier default newid(),
    	two uniqueidentifier default newid()
    )
    GO
     
    INSERT INTO #tmp VALUES (default, default)
    GO
     
    SELECT * FROM #tmp
    GO
     
    DROP TABLE #tmp
    GO
    http://msdn2.microsoft.com/fr-fr/library/ms187752.aspx

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2005
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 90
    Par défaut


    Merci pour ta réponse...
    J'ai compris que uniqueidentifier ne spécifiait pas un integer en auto-increment (ce sont des vieux réflexes de Access...).

    Salut.

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 995
    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 995
    Billets dans le blog
    6
    Par défaut
    Attention : l'utilisation du type UNIQUEIDENTIFIER en tant que clef est particulièrement contre performant. SI vous voulez un auto incrément, utilisez le type INT ou BIGINT avec la propriété IDENTITY.

    Exemple :

    CREATE TABLE T_CLIENT
    (CLI_ID INT NOT NULL PRIMARY KEY IDENTITY,
    CLI_NOM VARCHAR(50))

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

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

Discussions similaires

  1. [ASE]Utiliser timestamp dans une clause WHERE
    Par JeffK dans le forum Adaptive Server Enterprise
    Réponses: 14
    Dernier message: 03/12/2007, 12h34
  2. Utiliser ssh dans une application java
    Par Samanta dans le forum Sécurité
    Réponses: 12
    Dernier message: 28/02/2007, 16h30
  3. propriété 1-1 dans une relation
    Par cla dans le forum Access
    Réponses: 6
    Dernier message: 03/05/2006, 10h50
  4. Réponses: 1
    Dernier message: 05/10/2005, 14h52
  5. utiliser mysql++ dans une classe
    Par Yevetrovitch dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 11/04/2005, 10h53

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