Может ли детерминированный зашифрованный столбец участвовать в ограничении внешнего ключа в SQL Server 2016 - PullRequest
1 голос
/ 23 мая 2019

Требуется разъяснение по этой документации .

Шифрование не поддерживается для:

Столбцы со свойством IDENTITY

Я хочу убедиться, что один из столбцов может быть столбцом IDENTITY, если он не зашифрован, но включен в ограничение FOREIGN-KEY, где иностранный аналог, который указывает на него, действительно зашифрован.

Предположим, что в SQL Server 2016 или более поздней версии у нас есть таблица CLIENT:

id int IDENTITY (1,1) NOT NULL  [column is primary key]
clientname varchar(100)

[ПРИМЕЧАНИЕ: идентификатор клиента имеет большую мощность. В этой таблице почти 200 000 клиентов.]

и таблица MEDICALPROCEDURES:

id int PK
procedurecode varchar(10)
clientid  int

и теперь ограничение внешнего ключа:

ALTER TABLE MEDICALPROCEDURES
ADD CONSTRAINT FK_MEDICALPROCEDURES_CLIENT
FOREIGN KEY(clientid) REFERENCES CLIENT(id)

Теперь, если столбец MEDICALPROCEDURES.clientid детерминированно зашифрован, а столбец CLIENT.id остается незашифрованным, будет ли успешно выполнено ограничение внешнего ключа?

И будут ли запросы, подобные следующему, прозрачно выполняться?

select 
C.clientname, MP.procedurecode
from CLIENT c inner join MEDICALPROCEDURES MP
on C.id=MP.clientid
where C.clientid=12345

1 Ответ

1 голос
/ 23 мая 2019

Это не будет работать.
Из документации не поддерживается следующее: «Ссылки на столбцы в ограничениях внешнего ключа при использовании рандомизированного шифрования или при использовании детерминированного шифрования, если в ссылочных и ссылочных столбцах используются разные ключи или алгоритмы». Поэтому вам нужно использовать одно и то же детерминированное шифрование для идентификатора и клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...