我有一个带有生成 ID 的 HSQLDB 数据库,我希望自动递增值始终高于 100,000。这对 HSQLDB 可行吗?任何数据库都可以做到这一点吗?
6 回答
根据HSQL 文档:
从 1.7.2 开始,默认使用 SQL 标准语法,允许指定初始值。支持的形式是( INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH n, [INCREMENT BY m])PRIMARY KEY, ...)。还添加了对 BIGINT 标识列的支持。因此,IDENTITY 列只是一个 INTEGER 或 BIGINT 列,其默认值由序列生成器生成。
...
下一个要使用的 IDENTITY 值可以用
ALTER TABLE <table name> ALTER COLUMN <column name> RESTART WITH <new value>;
可以使用以下语句更改要使用的下一个 IDENTITY 值。请注意,此语句在正常操作中不使用,仅用于特殊目的,例如重置身份生成器:
ALTER TABLE ALTER COLUMN <column name> RESTART WITH <new value>;
据我所知,所有 SQL 数据库都允许您为自增字段设置种子值。
更新:这是主要 SQL 数据库中的身份/自动增量实现列表。
使用 SQL Server 是可能的。定义自动编号列时,您可以定义起始编号和增量:
IDENTITY(100000, 1)
我知道 SQL Server 可以做到这一点,我想其他人也可以做到。
使用 SQL Server,您可以设置 ID 列种子(起始编号)和增量值。
您可以使用使用序列的数据库来做到这一点,例如 Oracle 和 PostgreSQL。创建序列时指定起始值。
这表明您也可以使用 HSQL 来完成。
不确定 HSQL,但在 MS SQL 中是的,这是可能的。将 ID 设置为自动递增,并将种子值设置为 100,000。