Sql I';我试图修改我的一个表并添加一个外键,但我总是遇到同样的错误

Sql I';我试图修改我的一个表并添加一个外键,但我总是遇到同样的错误,sql,sql-server,Sql,Sql Server,我得到的错误是: Msg 1769,第16级,状态1,第30行 外键“fk_pid”在引用表“扣留者”中引用了无效列“P_ID” 我的表格结构: create table Detainee ( D_ID bigint primary key identity not null, Fname nvarchar(50), Lname nvarchar(50), Address

我得到的错误是:

Msg 1769,第16级,状态1,第30行
外键“fk_pid”在引用表“扣留者”中引用了无效列“P_ID”

我的表格结构:

create table Detainee
(
        D_ID           bigint primary key identity not null,
        Fname          nvarchar(50),
        Lname          nvarchar(50),
        Address        varchar(200),
        DateOfBirth    date,
        DateOfArrest   date,
        SourceOfArrest nvarchar(max)
);

create table PrisonCell
(
        P_ID     bigint primary key not null,
        Capacity int,
        RemCap   int,
        C_Type   varchar(20)
);
更改表的代码:

alter table Detainee 
    add constraint fk_pid foreign key(P_ID) references PrisonCell(P_ID) 

您需要做的是:

  • 将列添加到您的表
    被拘留者
  • 然后将FK约束添加到该列
只是将FK约束添加到表中并不会自动添加列

您应该能够在一个步骤中完成此操作:

ALTER TABLE Detainee 
    ADD P_ID BIGINT 
    CONSTRAINT fk_pid FOREIGN KEY REFERENCES PrisonCell(P_ID);

您的代码无法生成该错误。它没有外键定义。您应该更新问题并提供生成错误的代码。但基于错误,它只是一种类型--
P\u ID
D\u ID
的比较。alter table INPECTED add constraint fk\u pid外键(P\u ID)引用PrisonCell(P\u ID)没有注意到没有发布此项。。如何更新我的问题我是stll new这里在你的问题下有一个编辑按钮。在执行此alter命令之前,你首先需要在
被拘留者
表中添加列
P\u ID