|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||
|
Membre du Club
![]() Inscription : juin 2010 Messages : 91 ![]() |
boujour,
j'ai voulu changer quelques fichiers .sql pour modifier la création d'une base de donnée et je veux des champs uniqueidentifier dans ma table. voici le code de la table : Code :
Citation:
|
|||
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Inscription : juin 2007 Messages : 115 ![]() |
C'est la valeur par défaut qui pose problème :
0 est de type int, or il est Impossible de convertir un int en uniqueidentifier. peut etre DEFAULT (NEWID()) peut convenir ? Ou bien autoriser les NULL ? |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : juin 2010 Messages : 91 ![]() |
Ok en attendant j'ai mit :
et cela ne me retourne pas d'erreur pour le moment mais je ne sait pas les conséquences du ' ' par la suite. Le NEWID() je sais pas comment sa fonctionne si sa recréér un id différent a chaque fois alors que l'on a des contraintes entre les champs uniqueidentifier je sent l'erreur d'avance mais bon je pourrai tester sa plus tard, sait-on jamais. Merci |
|
|
00
|
|
|
#4 | |
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 674 ![]() |
Bonjour,
Citation:
Si vous faites un UPDATE avec un SET maColonne = NEWID(), oui. Il existe aussi la fonction SELECT NEWSEQUENTIALID(), mais vous ne pouvez l'utiliser que dans une contrainte DEFAULT. En ce qui concerne la votre, vous pouvez écrire : Code :
DEFAULT (CAST(CAST(0 AS BINARY) AS uniqueidentifier)) Code :
DEFAULT (CAST('00000000-0000-0000-0000-000000000000' AS uniqueidentifier))
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
|
|
10
|
|
|
#5 |
|
Membre du Club
![]() Inscription : juin 2010 Messages : 91 ![]() |
Merci beaucoup elsuket ! ça m'a bien aidé !
J'aurais une toute dernière question avant de clore ce sujet : j'ai ça : Code :
[dbo].[Eerror].[ErrorID] = SCOPE_IDENTITY(); Code :
[dbo].[Eerror].[ErrorID] = CAST(CAST(SCOPE_IDENTITY()AS BINARY)AS uniqueidentifier); |
|
|
00
|
|
|
#6 | ||||
![]() ![]() ![]() Nicolas SouquetAdministrateur de base de données Inscription : janvier 2005 Messages : 4 674 ![]() |
Comme vous le lirez, SCOPE_IDENTITY() Renvoie la dernière valeur d'identité insérée dans une colonne d'identité.
Or seules les colonnes de type entier (tinyint, smallint, int et bigint) peuvent avoir cette propriété, et il ne peut y en avoir qu'une seule par table. En conséquence, une colonne de type UNIQUEIDENTIFIER ne peut pas retourner une telle valeur. Notez que le type uniqueidentifier est un très mauvais choix pour une clé primaire. Donc à l'INSERT, si vous voulez récupérer la valeur, vous ne pouvez faire que comme suit : Code :
Pour plusieurs lignes, vous devez écrire : Code :
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes. Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012 |
||||
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : juin 2010 Messages : 91 ![]() |
Merci il faut que je modifie pas mal de truc dans ce cas !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com