2010-09-29 4 views
1

Est-il possible de définir plus d'une clé primaire pour une table?Comment définir plus d'une clé primaire pour une table?

Si c'est possible comme clé composite - donc comment peut-il être utilisé avec l'application?

ADVANTAGES.

+0

double possible de [est-ce possible à fait deux clé primaire dans une table] (http://stackoverflow.com/questions/3767257/is-this-possible-to-made-two-primary-key -dans une seule table) – Thilo

Répondre

0

Vous ne pouvez pas. Il ne peut y avoir qu'une seule clé primaire sur une table (c'est pourquoi elle est appelée primaire ..). La seule chose que vous pouvez faire est de spécifier une clé primaire sur plusieurs colonnes (mais qui dépend de la mise en page de base de données:

CREATE TABLE Persons 
(
    P_Id int NOT NULL, 
    LastName varchar(255) NOT NULL, 
    FirstName varchar(255), 
    Address varchar(255), 
    City varchar(255), 
    CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName) 
) 
+0

est-il la clé composite .. ?? comment il est utilisé ..? / – pvaju896

4

Non, ce n'est pas possible

Cependant:.

Vous pouvez avoir plus d'un champ dans la clé primaire.

vous pouvez également ajouter des index uniques à des champs qui ne sont pas la clé primaire.

0

non, vous ne pouvez pas avoir plus que sur La clé primaire dans une table. Oui, une clé primaire peut composé de plusieurs champs, mais, compte tenu de votre question, je ne pense pas que ce soit ce dont vous avez besoin. Je ne sais pas ce qu'il est que vous devez exactement, mais une clé primaire a quelques fonctionnalités que vous cherchez probablement dans un autre domaine:

Unicity: Si vous avez besoin d'un autre domaine qui a une valeur unique dans tous les dossiers, vous pouvez appliquer une contrainte UNIQUE:

ALTER TABLE <table identifier> 
    ADD [ CONSTRAINT <constraint identifier> ] 
    UNIQUE (<column expression> {, <column expression>}...) 

Vitesse: Si vous avez un champ qui est recherché, très souvent, et la nécessité d'accélérer votre requête, vous pouvez ajouter un index à ce domaine.

CREATE INDEX <index identifier> 
    ON <table identifier> (<field name>) 
Questions connexes