我不知道这是否可行,我以这种方式进行搜索,但是很多人只是说这是不可能的。但是,我从互联网上获得了一种数据,可以通过复制案例或应用程序的方式进行研究,当然,看来有可能为不同的数据类型建立关系。让我们来看一个例子。
答案 0 :(得分:2)
我完全同意那些发表评论的人的观点:最佳答案是更改OrderDetail.OrderID的类型以匹配OrderHeader.ID。
做其他任何事情是一个非常不好的主意。
但是,假设由于某种原因您不能执行此操作,则可以创建外键。
您可以创建一个将一个数据类型转换为另一数据类型的计算字段,并在该字段上设置外键。请注意,为此,必须保留计算字段。
create table OrderHeader ( ID char(12) primary key )
create table OrderDetail ( OrderID char(10),
OrderID12 as cast ( OrderID as char(12) )
persisted
foreign key references OrderHeader(ID)
)
insert into OrderHeader ( ID ) values ( 'MOH333' )
insert into OrderDetail ( OrderID ) values ( 'MOH333' )
-- this one fails
insert into OrderDetail ( OrderID ) values ( '777PIR' )