【问题标题】:Alter column for primary key not working更改主键的列不起作用
【发布时间】:2015-02-05 07:02:18
【问题描述】:

我创建了一个新表,没有自动增加主键并将一组预定义数据插入到表中。现在我需要为无法设置的主键设置自动增量。请在下面的查询中提出我犯的错误。

ALTER TABLE SYNCBASE.AUTO_LOAD_DATASOURCES
ALTER COLUMN ID BIGINT NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY (START WITH 62, INCREMENT BY 1)

直到我插入了 61 行记录,它必须从 62 开始递增。但我;我得到错误

Error: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=BIGINT;RCES
ALTER COLUMN ID;SET, DRIVER=3.53.95
SQLState:  42601
ErrorCode: -104

提前致谢

【问题讨论】:

标签: sql db2 alter-table


【解决方案1】:

问题可能来自您的数据库中已经有数据并且修改主键会违反数据完整性这一事实。或者您可以检查您的 DBMS 是否允许您在创建表后对其进行更改。

【讨论】:

    【解决方案2】:

    首先...我们需要删除标识,然后更改列,然后才能正常工作。

    alter table SYNCBASE.AUTO_LOAD_DATASOURCES alter column ID drop identity;
    alter table SYNCBASE.AUTO_LOAD_DATASOURCES alter column ID set generated always as identity (start with 62, INCREMENT BY 1); 
    

    【讨论】:

      【解决方案3】:

      DDL 语句中存在语法错误。列定义不需要重复。该语句将起作用:

      ALTER TABLE SYNCBASE.AUTO_LOAD_DATASOURCES
          ALTER COLUMN ID SET GENERATED ALWAYS AS IDENTITY (START WITH 62);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-22
        相关资源
        最近更新 更多