【问题标题】:There are no primary or candidate keys in the referenced table 'Tabs'引用的表“选项卡”中没有主键或候选键
【发布时间】:2013-12-17 07:20:06
【问题描述】:

我有两张桌子

表#1:

CREATE TABLE Tabs
(
    TabId int,
    UserId int,
    TabName varchar(20),
    SettingName varchar(5000), 

    PRIMARY KEY (TabId, userId),
    FOREIGN KEY (UserId) REFERENCES UserProfile(UserId),
)

表 #2:

CREATE TABLE TabsSettings
(
    TabId int,
    UserId int,
    TabName varchar(20),
    SettingName varchar(5000),
    SettingValue varchar(5000),
    ModifiedOn datetime,
    CreatedOn datetime,

    PRIMARY KEY (TabId, userId),
    FOREIGN KEY (UserId) REFERENCES Tabs(UserId),
    FOREIGN KEY (TabId) REFERENCES Tabs(TabIdId) 
)

当我尝试执行我的第二个查询时,它会显示此错误

消息 1776,第 16 级,状态 0,第 1 行
引用表“Tabs”中没有与外键“FK_TabsSetti_UserI__7EF6D905”中的引用列列表匹配的主键或候选键。
消息 1750,第 16 级,状态 0,第 1 行
无法创建约束。查看以前的错误。

【问题讨论】:

  • 在第一个表命令中,您正在使用来自 UserProfile 的列,该列必须在创建 Tabs 表之前存在,因此对于第一个表创建,您需要一个已经创建的表 UserProfile 具有 UserId 列也在第二个创建命令中,您表示 TabIdId 此列不在 Tabs 表中

标签: sql sql-server-2008-r2


【解决方案1】:

您必须使用 单个 外键引用 两个 列:

 FOREIGN KEY (TabId,UserId) REFERENCES Tabs(TabId,UserId)

【讨论】:

  • 你检查了一下,明白了。还是谢谢
猜你喜欢
  • 1970-01-01
  • 2012-08-26
  • 2018-12-25
  • 2022-01-07
  • 2016-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多