代码之家  ›  专栏  ›  技术社区  ›  Mad Scientist

操作失败,因为表“y”上已存在名为“x”的索引或统计信息[重复]

  •  0
  • Mad Scientist  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我是SQL新手,我有一个SQL文件,当我执行它时,会发生以下错误:

    MSG 1913,16级,状态1,第463行
    操作失败,因为名为“ddt_pk”的索引或统计信息已存在于表“daily_data_type”中。

    运行此语句时出错:

    CREATE UNIQUE NONCLUSTERED INDEX DDT_PK 
        ON [DATE_DATA_TYPE]([TYPE_ID])
    GO
    
    ALTER TABLE [DATE_DATA_TYPE] 
        ADD CONSTRAINT [DDT_PK] PRIMARY KEY ([TYPE_ID])
    GO
    

    我知道它已经存在,但我想添加一个约束,而不是再次创建索引,所以我做错了什么?

    也许你还需要知道表是如何创建的,所以下面是声明:

    CREATE TABLE [DATE_DATA_TYPE] ([TYPE_ID] [numeric](18, 0) NOT NULL,
    [TYPE_NAME] [varchar](400) NOT NULL, [UNIT] [varchar](32) NOT NULL,
    [CHART_TYPE] [varchar](32) NOT NULL, [RES_ID] [numeric](18, 0) NOT NULL)
    GO
    

    我正在使用Microsoft SQL Server Management Studio。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Larnu    6 年前

    主键自动是 INDEX . 如果要创建 NONCLUSTERED 然后使用主键:

    ALTER TABLE [DATE_DATA_TYPE]
    ADD CONSTRAINT [DDT_PK] PRIMARY KEY NONCLUSTERED ([TYPE_ID]);