无法在现有表的主键上创建约束或索引或外键

问题描述 投票:0回答:1

我创建了一个表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行无法创建约束或索引。请参阅先前的错误。

我创建了一个表Demo。我希望它的键Customer_ID_f引用其他名为Customers的表的主键CustomerID。 DEMO表(带有外键)CREATE TABLE演示(ID int NOT NULL,...

sql sql-server database
1个回答
2
投票

尝试这个:

© www.soinside.com 2019 - 2024. All rights reserved.