Как установить (объединить) два первичных ключа в таблице

для небольшого приложения, связанного с продажами, мы разработали базу данных с использованием логической модели данных. Вышла на сцену, чтобы преобразовать в физическую модель. При создании таблицы в SQL Server Management Studio Express в соответствии с нашей логической моделью данных нам необходимо объединить два атрибута для формирования уникального идентификатора. Можно ли объединить два первичных ключа и установить его?

но, наблюдая образец Нортвинда, мы обнаружили, что в ORDER DETAILS таблица, мы видим два первичных ключа Order Id & Product Id. По таблице правил не может быть двух первичных ключей. Так как это случилось в Нортвинде?

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

кто-то дал предложение как

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

будет ли это работать ??

изменить ;

Теперь у моей таблицы есть 2 ПК в SSMS . это действительно или это просто комбинация 2 pksenter image description here

4 ответов


самый простой способ-использовать команду T-SQL в SSMS Express, а не пытаться использовать визуальные конструкторы.....

после того, как вы разработали и создали свою таблицу, попробуйте что-то вроде этого:

ALTER TABLE dbo.YourTableNameHere
ADD CONSTRAINT PK_YourTableNameHere
PRIMARY KEY(Item_Id, Purchase_Id)

нельзя создать два первичных ключа в таблице. Вы можете объединить два столбца в таблице и сделать как один первичный ключ

create table table1
(
col1 int,
col2 varchar(20),
....
Primary key (col1, col2)
)

вы не можете иметь 2 первичных ключа, но вы можете иметь составной первичный ключ, который является ключом из двух столбцов, что именно то, что вы получили в таблице [SalesOrderDetail] с [SalesOrderID] и [SalesOrderDetailID]


CREATE TABLE [dbo].[tab2](  
    [col1] [int] NOT NULL, 
    [col2] [int] NOT NULL, 
    [col3] [nchar](10) NOT NULL,  
    [col4] [nchar](10) NOT NULL,   
 CONSTRAINT [PK_tab2] PRIMARY KEY CLUSTERED    
(  
    [col1] ASC, 
    [col2] ASC 
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]  
) ON [PRIMARY]