Je sais que ce n'est pas la première fois que ce type de question est posée.
Mais pourquoi dans le scénario suivant la colonne calculée persistante est-elle créée "non déterministe". La réponse devrait toujours être la même, non?
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
Msg 4936, niveau 16, état 1, ligne 42 La colonne calculée «UTCTime» dans la table «test» ne peut pas être conservée car la colonne n'est pas déterministe.
Je pense que je suis ici les règles déterministes .
Est-il possible de créer une colonne calculée persistante ici?