SQL Server 2008 - можете ли вы индексировать постоянный столбец

Можно ли проиндексировать сохраненное поле?

При попытке изменить первичный ключ к постоянному полю или добавить первичный ключ к полю, которое я сделал постоянным полем, я получаю следующее:

Невозможно определить ограничение PRIMARY KEY для столбца, допускающего значение NULL, в таблице 'tblOpportunityRecords'.

2 ответа

Решение

Для того чтобы вычисляемое поле было ненулевым, вам нужно помочь SQL Server выяснить, что нулевые значения невозможны. Обычно это делается с помощью ISNULL функция, которая может использоваться, чтобы гарантировать, что полученное выражение не обнуляется.

ISNULL(my_computation, 0) --the second arg should have the same type as the first one

Обратите внимание, что вы не можете использовать COALESCE функция (по неизвестной мне причине - она ​​просто не работает).

Первичный ключ должен быть - по определению - NOT NULL и уникальный.

Но вы можете индексировать сохраняемый вычисляемый столбец с помощью регулярного некластеризованного индекса - абсолютно!

Другие вопросы по тегам