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

时间:2020-04-24 05:40:17

标签: sql sql-server database

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

1 个答案:

答案 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)
相关问题