【问题标题】:How I can create a table with two primary keys in T-sql? [duplicate]如何在 T-sql 中创建具有两个主键的表? [复制]
【发布时间】:2015-07-26 21:53:24
【问题描述】:

这段代码有什么问题?

CREATE TABLE pharmacy_night
(
    [Id_day] INT NOT NULL ,
    [Id_pharmacy] INT,
    constraint pk_pharmacy_night primary key (Id_day, Id_pharmacy),
    constraint fk_pharmacy_night_days foreign key (Id_day) references days(Id_day),
    constraint fk_pharmacy_night_pharmacy foreign key (Id_pharmacy) references pharmacy (Id_pharmacy)


)

【问题讨论】:

  • 你只能有一个主键,但你可以有复合主键。
  • 是的,我的意思是复合主键
  • 你可以添加更多,为什么你需要在一个表中有两个主键?如果两者都很重要,则将它们拆分为两个表或使用复合键。

标签: c# sql-server visual-studio tsql


【解决方案1】:

试试这个组合键

create table abc (
  ID int,
  number int,
  constraint PK_abc primary key (ID, number)
);

主键试试这个

create table abc
(
ID int primary key,
number int
)

【讨论】:

  • 它不起作用,当我尝试更新时收到错误
  • 什么错误?请解释您的业务案例...
  • 由于验证错误,更新无法继续。请更正以下错误并重试。 SQL71508 :: 模型已经有一个同名 dbo.abc 的元素。 SQL71501 :: 主键:[dbo].[PK_abc] 具有对对象 [dbo].[abc] 的未解析引用。 SQL71501 :: 主键:[dbo].[PK_abc] 具有对对象 [dbo].[abc] 的未解析引用。 SQL71508 :: 模型已经有一个同名的元素 dbo.abc.number。 SQL71508 :: 模型已经有一个同名 dbo.abc.ID 的元素。
  • 除了从某些服务器端代码中获取该错误之外,此错误无济于事。请问您的插入或更新数据查询是什么?检查这个SQL FIlddle
  • 插入查询是什么意思?只是我想用复合键创建一个表
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 2012-09-17
  • 1970-01-01
  • 2010-12-08
相关资源
最近更新 更多