【问题标题】:Error with foreign key SQL Server 2012外键 SQL Server 2012 出错
【发布时间】:2017-01-05 17:27:12
【问题描述】:

我在 SQL Server 2012 中添加外键时遇到问题

 create table Predracun
    (
    PredracunID int not null identity(1,1),
    Iznos nvarchar(255),
    Datum date,
    Opis nvarchar(255)
    )

create table Racun
(
RacunID int not null identity (1,1),
Sifra nvarchar(255),
BrojRacuna nvarchar(255)
)

create table Prijem
(
PrijemID int not null identity (1,1),
Datum date,
Opis nvarchar(255)
)

alter table Prijem
add constraint FK_PrijemPredracun
foreign key (PredracunID)
references Predracun (PredracunID)

以这种方式添加

我收到错误消息

消息 1769,第 16 级,状态 1,第 1 行 外键“FK_UredjajPrijem”在引用表“Uredjaj”中引用了无效列“PrijemID”。 消息 1750,第 16 级,状态 0,第 1 行 无法创建约束。查看以前的错误。

【问题讨论】:

  • 尝试将 PredracunID 设为表 Predracun 的主键
  • 您忘记包含失败的 DDL。你也可以包括它吗?
  • 您缺少主键并且列无效

标签: sql sql-server tsql ddl


【解决方案1】:

表 prijem 中不存在 PredracunID 列。因此不能用作外键。

【讨论】:

    【解决方案2】:

    使用以下脚本:

    CREATE TABLE Predracun
    (
        PredracunID int not null identity(1,1),
        Iznos nvarchar(255),
        Datum date,
        Opis nvarchar(255)
        PRIMARY KEY CLUSTERED 
        (
            [PredracunID] ASC
        )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    
    create table Racun
    (
        RacunID int not null identity (1,1),
        Sifra nvarchar(255),
        BrojRacuna nvarchar(255)
    )
    
    create table Prijem
    (
        PrijemID int not null identity (1,1),
        PredracunID int,
        Datum date,
        Opis nvarchar(255)
    )
    
    alter table Prijem
    add constraint FK_PrijemPredracun
    foreign key (PredracunID)
    references Predracun (PredracunID)
    

    注意:只能在引用表中的主键列或唯一键列上创建外键。您在脚本中遗漏了两件事。

    1. Predracun 表没有任何键(唯一或主)列
    2. 要在 Prijem 表中创建外键,您必须在 create table 语句中包含 PredracunID 列。

    【讨论】:

      猜你喜欢
      • 2016-06-04
      • 1970-01-01
      • 2016-09-03
      • 1970-01-01
      • 2014-12-25
      • 1970-01-01
      • 2018-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多