В настоящее время я выполняю переход от MS Access к SQL Server. Поскольку Access позволяет несколько Nulls на уникальных индексах, где, как не работает SQL Server ... Я обрабатывал миграцию, удаляя индексы в SQL Server и добавляя отфильтрованные индексы: CREATE UNIQUE NONCLUSTERED INDEX idx_col1_notnull ON tblEmployee(col1) WHERE col1 IS NOT NULL;
Уникальная константа TSQL Multi Column, которая также допускает множественные нули
Проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, как реализовать составные или многоколонные «фильтрованные» индексы ... или если это действительно возможно, так как я не нашел примеров для его исследования.
У меня есть идея реализовать путем создания отфильтрованных индексов, как так:
CREATE UNIQUE NONCLUSTERED INDEX idx_col1col2_notnull ON tblEmployee(col1,col2) WHERE col1 IS NOT NULL
А затем добавить второй отфильтрованный индекс:
CREATE UNIQUE NONCLUSTERED INDEX idx_col2col1_notnull ON tblEmployee(col1,col2) WHERE col2 IS NOT NULL
Но я не уверен, если это будет даже работа не говоря уже о лучшем методе. Было бы высоко оценено руководство в правильном направлении.
Рассматривали ли вы с помощью проверочных ограничений? По крайней мере, вам не нужно будет иметь несколько индексов в таблице. –
@JamesZ. Я знаком с использованием контрольных ограничений в контексте их включения и выключения для целей миграции ... поэтому я буду исследовать его. Спасибо ... –
Исправьте его в дизайне данных. Создайте таблицу FK, которая не допускает null. Затем просто создайте представление с левым соединением, чтобы представить нуль. – Paparazzi