вычисляемый постоянный столбец - PullRequest
0 голосов
/ 02 июля 2018

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

Вычисляемый столбец 'Resources_1' в таблице 'ImplProject' не может быть сохранен, поскольку столбец недетерминирован.

Я пытался найти во многих блогах об этом, но не смог найти правильное решение. Пожалуйста, помогите

select ISNULL(STUFF((SELECT CHAR(10) + d.[Value] + ': ' + [dbo].[FullName](u.[FirstName], u.[LastName])
        FROM [ImplProject] ip
            JOIN [Resource] r ON r.[EntityId] = ip.[Id]
            JOIN [Dropdown] d ON d.[Id] = r.[TypeDropdownId]
            LEFT JOIN [User] u ON u.[Id] = r.[UserId]
        WHERE ip.[Id] = @implid
        ORDER BY d.[Value]
        FOR XML PATH('')), 1, 1, ''), '') as "Resources" 

1 Ответ

0 голосов
/ 02 июля 2018

Ну, если столбец недетерминированный, он не может быть сохранен, и вполне понятно, почему:
Постоянный столбец вычисляется при изменении одного из его компонентов, и для получения надежных значений формула для его вычисления должна быть детерминированной.
Если формула для вычисления значения столбца является недетерминированной, она должна вычисляться при каждом использовании - это означает, что она не может быть сохранена.

Формула является детерминированной, если она всегда возвращает одно и то же значение для одного и того же ввода. Поскольку ваша формула зависит от данных из таблицы, она не может быть детерминированной, и поэтому ваш столбец не может быть сохранен.

...