【问题标题】:Foreign key references invalid table. Could not create constraint or index外键引用无效表。无法创建约束或索引
【发布时间】:2018-11-26 01:28:08
【问题描述】:

我正在尝试创建一个包含 3 列的表。第一列应该是一个名为 DescriptionsID 的标识列,第二列应该是一个名为 ProductID 的外键列,第三列应该是一个名为 Description 的 xml 列。但是,我收到一个错误:

外键“FK_ProductDescriptions_bacb18ce3aa67348e55d”引用无效表“产品”和“无法创建约束或索引。请参阅以前的错误。”

这是我得到的:

CREATE TABLE ProductDescriptions (DescriptionsID int PRIMARY KEY NOT NULL,

ProductID varchar(25) NOT NULL,

FOREIGN KEY (ProductID) REFERENCES Product(ProductID),

Description text NULL) ;

参考产品(ProductID)有错误/红色下划线

【问题讨论】:

  • 错误告诉您问题...您要么没有表Product,要么您的表产品没有列ProductID。鉴于您使用了复数形式的 ProductDescriptions,您的产品表是否不称为 Products
  • 快到 2019 年了 - 没有人应该使用 text 或 ntext 数据类型。唯一的真实数据列(描述)也不应该可以为空。

标签: sql-server foreign-keys create-table


【解决方案1】:

当你创建一个引用约束时,你需要确保你引用的表和列已经存在于数据库中。

另外,引用列和被引用列的数据类型应该相同

Column 'Product.ProductId' is not the same data type as referencing column
'ProductDescriptions.ProductID' in the foreign key

所以先创建产品表,并将产品ID设置为主键

CREATE TABLE Product
(
    ProductId INT IDENTITY(1,1) PRIMARY KEY,
    ProductName VARCHAR(50)
)

CREATE TABLE ProductDescriptions 
(
    DescriptionsID int PRIMARY KEY NOT NULL,
    ProductID INT NOT NULL 
    ,FOREIGN KEY (ProductID) REFERENCES Product(ProductID),
    [Description] text NULL
) ;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-07
    • 2012-12-19
    • 1970-01-01
    • 2021-05-13
    • 2013-05-04
    • 2022-10-12
    • 2014-02-26
    相关资源
    最近更新 更多