Ich weiß, dass dies nicht das erste Mal ist, dass diese Art von Frage gestellt wurde.
Aber warum wird im folgenden Szenario die persistierte berechnete Spalte "nicht deterministisch" erstellt? Die Antwort sollte immer dieselbe sein, oder?
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
Meldung 4936, Ebene 16, Status 1, Zeile 42 Die berechnete Spalte 'UTCTime' in der Tabelle 'test' kann nicht beibehalten werden, da die Spalte nicht deterministisch ist.
Ich glaube, ich folge hier den deterministischen Regeln .
Ist es möglich, hier eine persistierte berechnete Spalte zu erstellen?