Comment définir (combiner) deux clés primaires dans une table
Pour un petit liées aux ventes de l'application, nous avons conçu la base de données à l'aide de modèle logique de données. Venir à l'étape de se convertir au modèle physique. Lors de la création de la table dans SQL Server Management Studio Express, selon notre modèle logique de données, nous avons besoin de combiner deux attributs à la forme unique d'identification. Est-il possible de combiner les deux clés primaires et de le mettre?
Mais tout en observant les Comptoirs de l'Échantillon, nous avons constaté que dans la ORDER DETAILS
table, nous pouvons voir deux clés primaires Order Id
& Product Id
. Et selon la règle de la table ne peut pas avoir deux clés primaires. Alors, comment ça s'est passé dans les Comptoirs?
Dans mon cas, comment dois-je mettre deux colonnes dans ma table pour faire comme les deux clés primaires?
Quelqu'un a donné une suggestion comme
De le faire en deux clé primaire, ouvrez la table en mode création, puis cliquez sur
sur les deux de la les champs requis et la tenue de CTL, appliquer la clé primaire
Ce travail sera ??
Edit ;
maintenant ma table ont 2 PK est dans les SSM . est-il valide ou c'est juste une combinaison de 2 pks
Je pense que tu veux dire "une clé primaire composite" plutôt que de "deux clés primaires". Dans les Comptoirs, Id de la Commande n'est pas unique dans les Détails de la Commande, ni de l'Id de Produit. La combinaison est unique. Je pense que vous savez déjà cela, mais votre formulation n'est pas évident.
je viens de joint la capture d'écran du tableau de la question, est-ce juste une combinaison de 2 touches ??
Oui, c'est juste une combinaison de deux colonnes en une seule touche.
Comment l'utiliser dans SQL alors ?? par exemple dans " Select * from Pile où _____? . comment utiliser cette combinaison
OriginalL'auteur panindra | 2012-07-20
Vous devez vous connecter pour publier un commentaire.
La façon la plus simple serait d'utiliser une commande T-SQL dans SSMS Exprimer plutôt que d'essayer d'utiliser les concepteurs visuels.....
Une fois que vous avez conçu et créé votre table, essayez quelque chose comme ceci:
ne l'utilisez SQL comme toujours, juste parce que la clé primaire a deux colonnes ne change rien du tout .....
SELECT (list of cols) FROM dbo.Stack WHERE ...(whatever condition you need here)...
As-tu veux dire, je peux soit l'un des clés dans le Où pour identifier la ligne ou je peux utiliser la combinaison de touches . s'agit-il ??
vous pouvez utiliser tout ce que vous voulez à la recherche! Il n'y a aucune raison pourquoi vous devez utiliser uniquement les colonnes de clé primaire de la recherche...... ou ce que vous n'êtes pas certain?? La clé primaire ne définit que la combinaison de ces deux colonnes peut unique et en toute sécurité identifier chaque ligne - pas de deux lignes ont le mariage de (
Item_Id, Purchase_Id
) - tous la clé primaire applique...si vous avez besoin de trouver une ligne définie par
Item_Id
etPurchase_Id
, alors vous devriez juste utiliserSELECT (cols) FROM dbo.Stack WHERE Item_Id = 4711 AND Purchase_Id = 501992
ou tout ce que vous avez besoin.... depuis les deux colonnes sont la clé primaire, vous avez la garantie d'obtenir soit rien (si cette combinaison de valeurs n'existe pas), ou que vous avez la seule et unique ligne qui correspond à ces deux valeurs. Il peut y JAMAIS avoir plus d'une ligne pour ces deux valeurs.OriginalL'auteur marc_s
vous ne pouvez pas créer deux clés primaires dans une table. Vous pouvez combiner deux colonnes dans une table et de faire comme une seule clé primaire
OriginalL'auteur Joe G Joseph
vous ne pouvez pas avoir 2 clés primaires, mais vous pouvez avoir une clé primaire composite, qui est une clé composée de deux colonnes, ce qui est exactement ce que vous avez sur le [SalesOrderDetail] de la table [SalesOrderID] et [SalesOrderDetailID]
OriginalL'auteur Diego
{ }
) sur la barre d'outils editeur de bien le format et la surbrillance de la syntaxe! Ensuite, vous n'avez pas besoin de toutes ces malpropre<p>
et<br/>
balises, soit!OriginalL'auteur jainvikram444