这是我的代码。
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)
);
我有2个表,如上所示。这是我得到的错误。
列'CATEGORY.AutoIncCategoryNo'与长度或比例不同 在外键中引用列'PRODUCT.CategoryCode' 'CategoryCode_Constraint'。参与外键的列 必须以相同的长度和比例定义关系。
我该如何解决?
答案 0 :(得分:1)
当您在此时创建外键约束时,请确保列数据类型和大小相等。试试这个。
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)
);
答案 1 :(得分:0)
您正在添加' CAT'使用CATEGORY.AutoIncCategoryNo列中的Varchar(5)
但是PRODUCT.CategoryCode是VARCHAR(5)。 你必须把它作为VARCHAR(8)。