Tôi biết đây không phải là lần đầu tiên loại câu hỏi này được hỏi.
Nhưng tại sao trong kịch bản sau đây, cột được tính toán bền vững được tạo ra "không xác định". Câu trả lời phải luôn giống nhau, phải không?
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, Cấp 16, Trạng thái 1, Dòng 42 Cột tính toán 'UTCTime' trong bảng 'thử nghiệm' không thể tồn tại vì cột không xác định.
Tôi nghĩ rằng tôi đang tuân theo các quy tắc xác định ở đây .
Có thể tạo một cột tính toán bền bỉ ở đây?