如何在t-sql中制作一个既是主键又是外键的键

时间:2019-06-27 04:08:26

标签: sql-server tsql

代码是我之前尝试过的

create table DroppedPatients
(
    PatientKey nchar(15) not null,
    primary key (PatientKey),
    PatientKey nchar(15) not null references Patient(PatientKey)
)

但是,我不知道如何如图所示进行单个键操作?

enter image description here

我对SQL还是很陌生,所以除了正常的引用/外键之外,我没有做太多尝试

2 个答案:

答案 0 :(得分:3)

您在发布的代码中有两个错误。

第一个是您已经两次指定了PatientKey列-基本上是告诉SQL Server您正在尝试创建一个包含两个具有相同名称的列的表-自然是不可能的。 / p>

您的第二个错误是语法错误-您缺少一些关键字。

这是您代码的修订版:

CREATE TABLE DroppedPatients
(
    PatientKey NCHAR(15) NOT NULL,
    DateDropped DATETIME2 NOT NULL CONSTRAINT DF_DroppedPatients_DateDropped DEFAULT SYSDATETIME(),
    ReasonDropped NVARCHAR(200) NULL,
    CONSTRAINT PK_DroppedPatients PRIMARY KEY (PatientKey),
    CONSTRAINT FK_DroppedPatients_Patient FOREIGN KEY (PatientKey) REFERENCES Patient(PatientKey)
)

请注意,最佳做法是始终命名约束。

答案 1 :(得分:0)

是可能的-尝试在下面的查询中获得所需的结果-

create table DroppedPatients
(
    PatientKey nchar(15) not null  primary key  foreign key  references Patient(PatientKey)
)