【问题标题】:while altering for primary key i am getting this error在更改主键时出现此错误
【发布时间】:2018-02-21 08:16:04
【问题描述】:
ALTER TABLE VASTHRA_TALLY_BRIDGE.DBO.[VF_TALLY_MIGRATION_VOUCHER_DETAILS_GST_19_20] 
WITH NOCHECK ADD CONSTRAINT
VASTHRA_TALLY_BRIDGE.DBO.[VF_TALLY_MIGRATION_VOUCHER_DETAILS_GST_19_20] 
PRIMARY KEY  CLUSTERED  
( 
    voucher_Number,
    voucher_date,
    Debit Account Head,
    Credit Account Head,
    ITEM_NAME,
    RATE
)  ON [PRIMARY] END

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

【问题讨论】:

  • 我删除了 postgresql 标签,因为这显然是一条 SQL Server 错误消息
  • 在CONSTRAINT 这个词之后,你应该为约束提供你想要的名称。不重复表名(完整的数据库和模式名称)

标签: sql-server sql-server-2008 tsql ddl


【解决方案1】:

这里不需要约束名称,也不需要 DB 模式规范。

带空格的列必须用引号引起来。

ALTER TABLE VASTHRA_TALLY_BRIDGE.DBO.[VF_TALLY_MIGRATION_VOUCHER_DETAILS_GST_19_20] WITH NOCHECK ADD CONSTRAINT
 [VF_TALLY_MIGRATION_VOUCHER_DETAILS_GST_19_20] PRIMARY KEY  CLUSTERED  
 ( voucher_Number,voucher_date,
   [Debit Account Head],[Credit Account Head],ITEM_NAME,RATE)  
ON [PRIMARY]

END 关键字在这里是非法的,因为没有指定 BEGIN。

【讨论】:

    【解决方案2】:

    您将约束命名为VASTHRA_TALLY_BRIDGE.DBO.[VF_TALLY_MIGRATION_VOUCHER_DETAILS_GST_19_20]。一个对象,也是一个约束,不允许在其名称中包含点。所以,你应该给它一个不同的名字,例如PK_VF_TALLY_MIGRATION_VOUCHER_DETAILS_GST_19_20。

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 2016-03-29
      • 1970-01-01
      • 2021-09-24
      • 2020-12-08
      • 2019-03-07
      • 1970-01-01
      • 2022-08-24
      • 2017-06-05
      相关资源
      最近更新 更多