java - Derby 将空表的现有列更改为标识
问题描述
我正在尝试以下操作:
psAddPK = conn.prepareStatement("ALTER TABLE users ALTER usr
GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)");
psAddPK.execute();
但得到
java.sql.SQLSyntaxErrorException:语法错误:遇到“GENERATED”
在创建 usr 时定义为 NOT NULL
解决方案
您不能更改列以将其重新定义为身份,您必须从一开始就将其创建为身份列。或者您可以删除该列,然后将其重新添加为身份。
ALTER TABLE 语句允许您:
- 向表中添加列
- 向表中添加约束 从表中删除列
- 从表中删除现有约束
- 增加 VARCHAR 或 VARCHAR FOR BIT DATA 列的宽度
- 覆盖表的行级锁定(或删除覆盖)
- 更改标识列的增量值和起始值
- 更改列的可空性约束
- 更改列的默认值
句法:
ALTER TABLE table-name
{
ADD COLUMN column-definition |
ADD CONSTRAINT clause |
DROP [ COLUMN ] column-name [ CASCADE | RESTRICT ]
DROP { PRIMARY KEY | FOREIGN KEY constraint-name | UNIQUE
constraint-name | CHECK constraint-name | CONSTRAINT constraint-name }
ALTER [ COLUMN ] column-alteration |
LOCKSIZE { ROW | TABLE }
}
列改变
column-name SET DATA TYPE VARCHAR(integer) |
column-name SET DATA TYPE VARCHAR FOR BIT DATA(integer) |
column-name SET INCREMENT BY integer-constant |
column-name RESTART WITH integer-constant |
column-name [ NOT ] NULL |
column-name [ WITH | SET ] DEFAULT default-value |
column-name DROP DEFAULT
列定义
simple-column-name [ data-type ]
[ column-level-constraint ]*
[ [ WITH ] DEFAULT default-constant-expression
| generation-clause
]
推荐阅读
- c++ - 我无法交出矢量图
c++中带指针的变量 - java - 如何从 Android Studio 中的 FireStore 数据库中获取 if..else 的值?
- javascript - refMedium 返回空字符串。怎么了
- api - 如何将代码从 onOpen with menu 更改为 onEdit
- r - 如何计算条件的 TRUE 值,直到在 R 中找到 FALSE
- mysql - 将 SQL 文件导入 DBeaver
- mongodb - 如何使用 mongoDB 中的 max 和 where 条件在集合中查找输出
- vb.net - 如何刷新从 txt 文件读取的组合框列表
- reactjs - DragItemTypes 不是从“react-data-grid”导出的
- python - 如何将带有数字的列更改为反映与前一行列值按另一列值分组相关的变化的列?