将主键更改为自动增量 - JavaDB

时间:2013-02-08 11:06:26

标签: sql derby

我正在使用Netbeans,用Java编写并使用Derby。

我在APP中有一个名为PERSON的表。在PERSON中,我有一个名为PID的列,其中包含以下属性:

Name: PID
Nulls allowed: [ ]
Data type: NUMERIC
Column size: 4
Decimal digits: 0
Position: 1
Part of a primary key: [/]
Part of an index: [/]

我使用了元数据isAutoIncrement函数来检查它是否已经自动递增而它不是!

我已经尝试使用以下SQL命令来改变它:

我相信这可能不适用于德比:

ALTER TABLE APP.PERSON ALTER PID NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY 
(START WITH 1, INCREMENT BY 1); 

检查Oracle网站后,我找到了正确的语法:

ALTER TABLE APP.PERSON ALTER PID SET INCREMENT BY 1;

我甚至尝试过前导零:

ALTER TABLE APP.PERSON ALTER PID SET INCREMENT BY 0001;

其中没有一个有效,我在最后两个错误中得到的错误是:

ALTER TABLE '"APP"."PERSON"' specified attributes for column 'PID' that are 
not compatible with the existing column.

正确语法的任何想法?

1 个答案:

答案 0 :(得分:1)

以下是我通常要做的事情:

  1. 使用所需的架构创建一个新表,包括生成的主键
  2. 发出INSERT INTO newtable SELECT列FROM oldtable以从旧表中填充新表的数据
  3. 将旧表重命名为某个临时名称,例如table_soon_to_be_deleted
  4. 将新表重命名为所需的表名
  5. 进行一些测试以确保我的行为符合预期
  6. 删除我在步骤(4)中重命名的旧表。