我创建了一个表Demo
。我希望其键Customer_ID_f
引用其他名为CustomerID
的表的主键Customers
。
DEMO表(带外键)
CREATE TABLE Demo (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
Age int Not Null,
City varchar(200) DEFAULT 'Sydney',
OrderDate DATE DEFAULT getdate(),
CHECK (AGe>=18),
Customer_ID_f char(5) not null
PRIMARY KEY (ID),
FOREIGN KEY (Customer_ID_f) REFERENCES Customers(CustomerID))
具有主键的客户表
关于CustomerID
表中字符Customers
的信息。
Select *
From INFORMATION_SCHEMA.COLUMNS
Where TABLE_NAME = 'Customers';
TABLE_SCHEMA TABLE_NAME COLUMN_NAME ORDINAL_POSITION COLUMN_DEFAULT IS_NULLABLE DATA_TYPE CHARACTER_MAXIMUM_LENGTH CHARACTER_OCTET_LENGTH
dbo Customers CustomerID 1 NULL NO nchar 5 10
如您所见,在Customers
表中,主键的nchar长度为5(max_length),我在演示表中使用了相同的键。还是我出错了。
错误:
“ Customers.CustomerID”列与在外键中引用“ Demo.Customer_ID_f”列的数据类型不同 'FK__Demo__Customer_I__690797E6'。
Msg 1750,第16级,状态1,第156行 无法创建约束或索引。查看先前的错误。
答案 0 :(得分:1)
尝试这个:
CREATE TABLE Demo (
ID int NOT NULL PRIMARY KEY identity(1,1),
LastName varchar(255) NOT NULL,
Age int Not Null,
City varchar(200) DEFAULT 'Sydney',
OrderDate DATE DEFAULT getdate(),
CHECK (AGe>=18),
Customer_ID_f nchar(5)
)
ALTER TABLE Demo
ADD CONSTRAINT FK_Demo_Customer_ID
FOREIGN KEY (Customer_ID_f) REFERENCES Customers(CustomerID)