sql-server 外键错误(长度问题)

zbdgwd5y  于 2022-10-31  发布在  其他
关注(0)|答案(3)|浏览(612)

这是我的代码。

CREATE TABLE CATEGORY 
(
    CategoryNo int IDENTITY(1,1) NOT NULL,
    AutoIncCategoryNo AS 'CAT' + RIGHT('00000' + CAST(CategoryNo AS VARCHAR(5)),5) PERSISTED,
    CategoryName varchar(100) NOT NULL,
    PRIMARY KEY (AutoIncCategoryNo)
);

CREATE TABLE PRODUCT 
(
    ProductNo int IDENTITY(1,1) NOT NULL,
    AutoIncProduct AS 'P' + RIGHT('00000' + CAST(ProductNo AS VARCHAR(5)),5) PERSISTED,
    ProductName varchar(100) NOT NULL,
    CategoryCode VARCHAR(5),
    UnitPrice decimal(6,2),
    PRIMARY KEY (AutoIncProduct),
    CONSTRAINT CategoryCode_Constraint
    FOREIGN KEY (CategoryCode)
    REFERENCES CATEGORY(AutoIncCategoryNo) 
);

我有两个表如上所示。这里是我得到的错误。
列“CATEGORY.AutoIncCategoryNo”与外键“CategoryCode_Constraint”中得引用列“PRODUCT.CategoryCode”得尺子或小数位数不同.参与外键关系得列必须定义为具有相同得尺子与小数位数.
我该如何修复它?

t2a7ltrp

t2a7ltrp1#

在创建外键约束时,请确保列数据类型和大小相等。请尝试以下操作。

CREATE TABLE CATEGORY (
    CategoryNo int IDENTITY(1,1) NOT NULL,
    AutoIncCategoryNo AS 'CAT' + RIGHT('00000' + CAST(CategoryNo AS VARCHAR(5)),5) PERSISTED,
    CategoryName varchar(100) NOT NULL,
    PRIMARY KEY (AutoIncCategoryNo)
);

    CREATE TABLE PRODUCT (
    ProductNo int IDENTITY(1,1) NOT NULL,
    AutoIncProduct AS 'P' + RIGHT('00000' + CAST(ProductNo AS VARCHAR(5)),5) PERSISTED,
    ProductName varchar(100) NOT NULL,
    CategoryCode VARCHAR(8),
    UnitPrice decimal(6,2),
    PRIMARY KEY (AutoIncProduct),
    CONSTRAINT CategoryCode_Constraint
    FOREIGN KEY (CategoryCode)
    REFERENCES CATEGORY(AutoIncCategoryNo) 
);
drkbr07n

drkbr07n2#

您正在CATEGORY.AutoIncCategoryNo列中添加带有Varchar(5)的“CAT”
但是Product.CategoryCode是VARCHAR(5)。您必须将其设置为VARCHAR(8)。

q3aa0525

q3aa05253#

列'Student.Admission_Number'与外键'FK__atten__Admission__75A278F5'中的引用列'atten.Admission_Number'的长度或小数位数不同。参与外键关系的列必须定义为具有相同的长度和小数位数

相关问题