web-dev-qa-db-fra.com

Comment ajouter une clé primaire composite à la table

create table d(id numeric(1), code varchar(2))

Après avoir créé le tableau ci-dessus, comment puis-je ajouter une clé primaire composite sur les deux champs et également une clé étrangère?

28
Domnic

Dans Oracle, vous pouvez faire ceci:

create table D (
  ID numeric(1),
  CODE varchar(2),
  constraint PK_D primary key (ID, CODE)
);
28
Simon Nickerson

alter table d add constraint pkc_Name primary key (id, code)

devrait le faire. Il existe de nombreuses options pour une clé/index primaire de base en fonction de la base de données avec laquelle vous travaillez.

30
Chris W

Le ALTER TABLE la déclaration présentée par Chris devrait fonctionner, mais vous devez d'abord déclarer les colonnes NOT NULL. Toutes les parties d'une clé primaire doivent être NOT NULL.

6
Thilo

Vous n'avez pas besoin de créer d'abord la table, puis d'ajouter les clés dans les étapes suivantes. Vous pouvez ajouter à la fois la clé primaire et la clé étrangère lors de la création de la table:

Cet exemple suppose l'existence d'une table (Codes) que nous voudrions référencer avec notre clé étrangère.

CREATE TABLE d (
id [numeric](1),
code [varchar](2),
PRIMARY KEY (id, code),
CONSTRAINT fk_d_codes FOREIGN KEY (code) REFERENCES Codes (code)
)

Si vous n'avez pas de table que nous pouvons référencer, ajoutez-en une comme celle-ci pour que l'exemple fonctionne:

CREATE TABLE Codes (
    Code [varchar](2) PRIMARY KEY   
    )

REMARQUE: vous devez avoir une table à référencer avant de créer la clé étrangère.

4
Jon Crowell

Si vous utilisez Sql Server Management Studio Designer, sélectionnez simplement les deux lignes (Maj + clic) et Définir la clé primaire.

enter image description here

2
Brent