Как добавить составной первичный ключ в таблицу - PullRequest
28 голосов
/ 29 августа 2009
create table d(id numeric(1), code varchar(2))

После создания таблицы выше, как я могу добавить составной первичный ключ для обоих полей, а также внешний ключ?

Ответы [ 5 ]

29 голосов
/ 29 августа 2009

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

должен это сделать. Существует множество вариантов базового первичного ключа / индекса в зависимости от того, с какой базой данных вы работаете.

27 голосов
/ 29 августа 2009

В Oracle вы можете сделать это:

create table D (
  ID numeric(1),
  CODE varchar(2),
  constraint PK_D primary key (ID, CODE)
);
6 голосов
/ 29 августа 2009

Заявление ALTER TABLE, представленное Крисом, должно сработать, но сначала нужно объявить столбцы NOT NULL. Все части первичного ключа должны быть NOT NULL.

4 голосов
/ 03 сентября 2013

Вам не нужно сначала создавать таблицу, а затем добавлять ключи на последующих шагах. При создании таблицы вы можете добавить как первичный, так и внешний ключи:

В этом примере предполагается наличие таблицы (Codes), на которую мы хотели бы сослаться с нашим внешним ключом.

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

Если у вас нет таблицы, на которую мы можем ссылаться, добавьте такую, чтобы пример работал:

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

ПРИМЕЧАНИЕ: перед созданием внешнего ключа у вас должна быть таблица для ссылки.

2 голосов
/ 10 февраля 2016

Если вы используете Sql Server Management Studio Designer, просто выберите обе строки (Shift + клик) и Установить первичный ключ.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...