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
и уникальный.
Но вы можете индексировать сохраняемый вычисляемый столбец с помощью регулярного некластеризованного индекса - абсолютно!