создать внешний ключ в другом типе данных - PullRequest
0 голосов
/ 19 сентября 2018

Я не знаю, возможно ли это или нет, и я искал этот путь, но многие из них просто говорят, что это невозможно.Но я получил данные из интернета для изучения способа копирования дела или приложения, и, конечно, похоже, что возможно установить отношения для другого типа данных.Давайте рассмотрим пример.

enter image description here

1 Ответ

0 голосов
/ 19 сентября 2018

Я абсолютно согласен с теми, кто оставил комментарии: лучший ответ - изменить тип 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' )
...