Derby DB修改列上的“GENERATED”表达式

时间:2012-12-14 19:38:00

标签: sql derby

我正在尝试更改具有如下表格的Derby数据库:

CREATE TABLE sec_merch_categories (
category_id int NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
packageName VARCHAR(100) NOT NULL,
name VARCHAR(100) NOT NULL,
primary key(category_id)
);

我想将category_id列更改为:

category_id int NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),

我见过的唯一一个文档是IBM's DB2,它建议删除表达式,更改表的完整性,然后重新添加表达式。无论如何在Derby中这样做了吗?

谢谢,

安德鲁

1 个答案:

答案 0 :(得分:0)

您可以使用所需的架构创建一个新表(但名称不同),然后使用INSERT INTO ... SELECT FROM ...将数据从旧表复制到新表(或卸载旧表)使用复制数据系统过程将表重新加载到新表中,然后使用RENAME TABLE将旧表重命名为备用名,并将新表重命名为所需名称。

并且,正如上面评论中指出的@a_horse_with_no_name,所有这些步骤都记录在Apache网站上的Derby文档中。