LinqPad语法用于添加外键约束

时间:2018-02-14 11:25:35

标签: sql linqpad

这是我在LinqPad中使用的SQL:

CREATE TABLE Category 
(
    catID int NOT NULL,
    catName NVARCHAR(150) NOT NULL,
    catDesc NVARCHAR(150) NULL,
    catCount int NOT NULL ,
    CONSTRAINT category_pk PRIMARY KEY (catID)
);

CREATE TABLE InventoryTBLC 
(
    itemID int NOT NULL IDENTITY(1,1) CONSTRAINT PK_items PRIMARY KEY,
    itemName NVARCHAR(150) NOT NULL,
    itemDesc NVARCHAR(150) NULL,
    itemQuantity int,
    itemPrice int,
    imagePath NVARCHAR(300),
    correctInsert NVARCHAR(300),
    realImage image,

    CONSTRAINT FK_category FOREIGN KEY (catID) REFERENCES Category(catID)   
);

但是我收到以下错误:

  

无效的列ID。 [catID]

有人可以帮我使用LinqPad语法吗?

1 个答案:

答案 0 :(得分:1)

如果要使用列作为外键,则必须先在表定义中列出该列!添加外键约束 NOT 将该列添加到您的表中!

这绝不是Linqpad特有的 - 这是标准SQL 行为。

因此,您需要将catId添加到第二个表格中,如下所示:

CREATE TABLE InventoryTBLC 
(
    itemID int NOT NULL IDENTITY(1,1) CONSTRAINT PK_items PRIMARY KEY,
    itemName NVARCHAR(150) NOT NULL,
    itemDesc NVARCHAR(150) NULL,
    itemQuantity int,
    itemPrice int,
    imagePath NVARCHAR(300),
    correctInsert NVARCHAR(300),
    realImage image,
    catID int NOT NULL,   -- this column *MUST* exist to be used as FK

    CONSTRAINT FK_category 
        FOREIGN KEY (catID) REFERENCES Category(catID)   
);

或者您可能希望使用InventoryTBLC中其他预先存在的列之一作为您的FK列?