Sei que não é a primeira vez que esse tipo de pergunta é feito.
Mas por que no cenário a seguir a coluna computada persistente está sendo criada "não determinística". A resposta deve sempre ser a mesma, certo?
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
Mensagem 4936, nível 16, estado 1, linha 42 A coluna computada 'UTCTime' na tabela 'teste' não pode ser mantida porque a coluna é não determinística.
Acho que estou seguindo as regras deterministas aqui .
É possível criar uma coluna computada persistida aqui?