我有一个系统版本的临时表,即[dbo].[Contact]
,出于开发目的,我尝试播种一些过时的数据。该表包含GENERATED ALWAYS
列。
这个问题是我退出问题的子问题临时表中带有旧日期的种子数据 - SQL Server
原始表架构:
CREATE TABLE [dbo].[Contact](
[ContactID] [uniqueidentifier] NOT NULL,
[ContactNumber] [nvarchar](50) NOT NULL,
[SysStartTime] [datetime2](0) GENERATED ALWAYS AS ROW START NOT NULL,
[SysEndTime] [datetime2](0) GENERATED ALWAYS AS ROW END NOT NULL,
CONSTRAINT [PK_Contact] PRIMARY KEY NONCLUSTERED
(
[ContactID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
PERIOD FOR SYSTEM_TIME ([SysStartTime], [SysEndTime])
) ON [PRIMARY]
WITH
(
SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[ContactHistory] , DATA_CONSISTENCY_CHECK = ON )
)
我尝试SYSTEM_VERSIONING
使用以下 SQL 代码将其关闭
ALTER TABLE dbo.Contact SET (SYSTEM_VERSIONING = OFF);
现在表格变得像普通表格一样
现在我尝试在[dbo].[Contact]
INSERT INTO dbo.Contact
(
ContactID,
ContactNumber,
SysStartTime,
SysEndTime
)
VALUES
(
NEWID(), -- ContactID - uniqueidentifier
N'1234567890', -- ContactNumber - nvarchar
'2014-09-13 00:00:00', -- SysStartTime - datetime2
'9999-12-31 23:59:59' -- SysEndTime - datetime2
)
但我仍然遇到同样的错误
消息 13536,级别 16,状态 1,第 20 行无法将显式值插入到表“DevDB.dbo.Contact”的 GENERATED ALWAYS 列中。将 INSERT 与列列表一起使用以排除 GENERATED ALWAYS 列,或将 DEFAULT 插入 GENERATED ALWAYS 列。