Вычисляемый постоянный столбец
Я пытаюсь использовать постоянную опцию вычисляемого столбца для результата, полученного в результате запроса ниже, который я использовал в скалярной функции. Я столкнулся с приведенной ниже ошибкой.
Вычисляемый столбец "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 ответ
Что ж, если столбец недетерминированный, он не может быть сохранен, и вполне понятно, почему:
Постоянный столбец вычисляется при изменении одного из его компонентов, и для получения надежных значений формула для его вычисления должна быть детерминированной.
Если формула для вычисления значения столбца является недетерминированной, она должна вычисляться при каждом использовании - это означает, что она не может быть сохранена.
Формула является детерминированной, если она всегда возвращает одно и то же значение для одного и того же ввода. Поскольку ваша формула зависит от данных из таблицы, она не может быть детерминированной, и поэтому ваш столбец не может быть сохранен.