【问题标题】:SQL Server 2016 Temporal table Throwing Incorrect Syntax for "GENERATED"SQL Server 2016 时态表为“GENERATED”抛出不正确的语法
【发布时间】:2019-10-23 04:26:50
【问题描述】:

求助,由于某种原因我无法让它工作。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[MYTABLE]
(
    [MyTableId] [INT] IDENTITY(1,1) NOT NULL,
    [Description] [NVARCHAR](255) NULL,
    [DisplayOrder] [INT] NOT NULL,
    [VALIDFROM] [DATETIME2](7) GENERATED ALWAYS AS ROW START NOT NULL,
    [VALIDTO] [DATETIME2](7) GENERATED ALWAYS AS ROW END NOT NULL,
    PERIOD FOR SYSTEM_TIME ([VALIDFROM], [VALIDTO]),
    CONSTRAINT [PK_MYTABLE] PRIMARY KEY CLUSTERED ([MyTableId] ASC)
)  ON [PRIMARY]
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[MYTABLE_History]))
GO

我不断收到这些错误:

消息 102,第 15 级,状态 1,第 24 行
'GENERATED' 附近的语法不正确。

消息 319,第 15 级,状态 1,第 29 行
关键字“with”附近的语法不正确。如果这个语句是一个公用表表达式、一个 xmlnamespaces 子句或一个更改跟踪上下文子句,则前面的语句必须以分号结束。

消息 319,第 15 级,状态 1,第 30 行
关键字“with”附近的语法不正确。如果这个语句是一个公用表表达式、一个 xmlnamespaces 子句或一个更改跟踪上下文子句,则前面的语句必须以分号结束。

这是 SQL Server 2016 安装。

有什么帮助吗?

【问题讨论】:

  • 检查括号。

标签: sql sql-server


【解决方案1】:

在语法上有点偏离。将您的第一个 WITH 移动到您的约束,因为它已绑定到文件组之前。

CREATE TABLE [dbo].[MYTABLE](
    [MyTableId] [int] IDENTITY(1,1) NOT NULL,
    [Description] [nvarchar](255) NULL,
    [DisplayOrder] [int] NOT NULL,
    [VALIDFROM] [datetime2](7) GENERATED ALWAYS AS ROW START NOT NULL,
    [VALIDTO] [datetime2](7) GENERATED ALWAYS AS ROW END NOT NULL,
    PERIOD FOR SYSTEM_TIME ([VALIDFROM], [VALIDTO]),
    CONSTRAINT [PK_MYTABLE] 
        PRIMARY KEY CLUSTERED ([MyTableId] ASC)
        WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
) ON [PRIMARY]
 WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[MYTABLE_History]))

【讨论】:

    【解决方案2】:

    你的语法有误。第一个 WITH 与您的索引有关,因此应该在此之后。

    CREATE TABLE [dbo].[MYTABLE](
        [MyTableId] [int] IDENTITY(1,1) NOT NULL,
        [Description] [nvarchar](255) NULL,
        [DisplayOrder] [int] NOT NULL,
        [VALIDFROM] [datetime2](7) GENERATED ALWAYS AS ROW START NOT NULL,
        [VALIDTO] [datetime2](7) GENERATED ALWAYS AS ROW END NOT NULL,
        PERIOD FOR SYSTEM_TIME ([VALIDFROM], [VALIDTO]),
        CONSTRAINT [PK_MYTABLE] PRIMARY KEY CLUSTERED ([MyTableId] ASC) WITH (PAD_INDEX = OFF,STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
    ) ON [PRIMARY] with (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[MYTABLE_History]))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-14
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-13
      • 1970-01-01
      相关资源
      最近更新 更多