So che non è la prima volta che questo tipo di domanda è stata posta.
Ma perché nel seguente scenario la colonna calcolata persistente viene creata "non deterministica". La risposta dovrebbe essere sempre la stessa, giusto?
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
Messaggio 4936, livello 16, stato 1, riga 42 La colonna calcolata "UTCTime" nella tabella "test" non può essere mantenuta poiché la colonna non è deterministica.
Penso di seguire le regole deterministiche qui .
È possibile creare una colonna calcolata persistente qui?