Sé que esta no es la primera vez que se hace este tipo de preguntas.
Pero, ¿por qué en el siguiente escenario se crea la columna calculada persistente "no determinista". La respuesta siempre debe ser la misma, ¿verdad?
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
Mensaje 4936, Nivel 16, Estado 1, Línea 42 La columna calculada 'UTCTime' en la tabla 'prueba' no puede persistir porque la columna no es determinista.
Creo que estoy siguiendo las reglas deterministas aquí .
¿Es posible crear una columna computada persistente aquí?