Я знаю, что это не первый раз, когда задают такой вопрос.
Но почему в следующем сценарии постоянный вычисляемый столбец создается «недетерминированным». Ответ всегда должен быть одинаковым, верно?
CREATE TABLE dbo.test (Id INT, EventTime DATETIME NULL, PosixTime INT NOT NULL)
GO
DECLARE @EventTime DATETIME = '20181001 12:00:00'
DECLARE @GPSTime INT = DATEDIFF(SECOND, '19700101', @EventTime)
INSERT INTO dbo.Test(Id, EventTime, PosixTime)
VALUES (1, @EventTime, @GPSTime)
, (2, NULL, @GPSTime)
GO
SELECT * FROM dbo.test
GO
ALTER TABLE dbo.test ADD UTCTime AS CONVERT(DATETIME2,ISNULL(EventTime, DATEADD(SECOND, PosixTime, CONVERT(DATE,'19700101'))),112) PERSISTED
GO
Сообщение 4936, уровень 16, состояние 1, строка 42 Вычисляемый столбец «UTCTime» в таблице «test» не может быть сохранен, поскольку столбец недетерминирован.
Я думаю, что я следую определенным правилам здесь .
Можно ли здесь создать постоянный вычисляемый столбец?