Как мне создать уникальное ограничение, которое также допускает нулевые значения с помощью свободно перемещающегося? - PullRequest
0 голосов
/ 08 июля 2019

Я хочу иметь уникальное ограничение для столбца, который я собираюсь заполнить GUID.Тем не менее, мои данные содержат нулевые значения для этих столбцов.Как создать ограничение, которое позволяет использовать несколько нулевых значений с помощью Fluent Migrator без нарушения уникального ограничения?

Я нашел обходной путь для SqlServer здесь .Таким образом, можно использовать IfDatabase FluentMigrator и выполнять сырой SQL для SqlServer.Но я хотел бы найти решение, которое не зависит от системы.

Решение SQLServer:

IfDatabase("sqlserver").Execute.Sql("
  CREATE UNIQUE NONCLUSTERED INDEX foo
  ON dbo.bar(key)
  WHERE key IS NOT NULL;
");

1 Ответ

0 голосов
/ 08 июля 2019

Эта функция - отфильтрованные индексы, частичные индексы и т. Д. - сильно зависит от СУБД.Например, SQL Server и PostgreSQL имеют разные синтаксисы для него, в то время как MySQL вообще не поддерживает это.

Из этого следует, что, поскольку существуют СУБД, которые не поддерживают такую ​​функцию, FluentMigrator не может предоставить такуюфункциональность в общих интерфейсах создания индекса.Тем не менее, он обеспечивает свободный интерфейс для того, что вы хотите сделать для SQLServer явно как SqlServer.SqlServerExtensions.UniqueNullsNotDistinct .

...