我知道这不是第一次提出此类问题。
但是,为什么在以下情况下创建的持久化计算列是“不确定的”。答案应该总是一样的,对不对?
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
消息4936,级别16,状态1,第42行表格'test'中的计算列'UTCTime'无法保留,因为该列是不确定的。
是否可以在此处创建一个持久化的计算列?