Индексированные представления и скалярные UDF - PullRequest
1 голос
/ 09 февраля 2010

Можно ли использовать UDF в представлениях индекса или это нарушает логику SCHEMABINDING?

Например, если в предложении where вида у меня было что-то вроде этого

WHERE
     UserCanSeePost(UserId,PostId)

Этот UDF затем выполнит поиск другой таблицы, чтобы проверить некоторые ограничения. Я предполагаю, что это не может быть сделано в индексированных представлениях?

Ответы [ 2 ]

3 голосов
/ 09 февраля 2010

Да, если оно детерминированное и само по себе имеет SCHEMABINDING

См. Индексированные представления тоже:

...
Пользовательские функции, на которые есть ссылки в представлении, должны быть созданы с опцией SCHEMABINDING.
...
Все функции, на которые ссылается выражения в представлении должны быть детерминированный. IsDeterministic собственность ОБЪЕКТА НЕДВИЖИМОСТИ Функция сообщает, является ли пользовательская функция детерминированный. Для дополнительной информации, см. Детерминированный и Недетерминированный Функции.
...

2 голосов
/ 09 февраля 2010

Если функция создается с помощью SCHEMABINDING, то вы можете использовать WITH SCHEMABINDING для представления, построенного поверх нее. Я не уверен на 100%, но я думаю, что функции с SCHEMABINDING были введены в SQL Server 2005 ...

Edit -> Нет, очевидно, вы могли бы использовать WITH SCHEMABINDING и в 2000 году.

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