【发布时间】:2010-10-04 06:07:51
【问题描述】:
我有一个带有生成 ID 的 HSQLDB 数据库,我希望自动递增值始终高于 100,000。这对 HSQLDB 可行吗?任何数据库都可以做到这一点吗?
【问题讨论】:
标签: sql primary-key identity hsqldb
我有一个带有生成 ID 的 HSQLDB 数据库,我希望自动递增值始终高于 100,000。这对 HSQLDB 可行吗?任何数据库都可以做到这一点吗?
【问题讨论】:
标签: sql primary-key identity hsqldb
自 1.7.2 起,SQL 标准语法 默认情况下使用,它允许 要指定的初始值。这 支持的形式是(整数 由默认身份生成(开始 使用 n,[按 m 递增])主键, ...)。还增加了对 BIGINT 标识列。因此, IDENTITY 列只是一个 INTEGER 或 BIGINT 列及其 序列生成的默认值 生成器。
...
下一个要使用的 IDENTITY 值可以 设置为
ALTER TABLE <table name> ALTER COLUMN <column name> RESTART WITH <new value>;
【讨论】:
Here's how to do it in HSQLDB:
可以使用以下语句更改要使用的下一个 IDENTITY 值。请注意,此语句在正常操作中不使用,仅用于特殊目的,例如重置身份生成器:
ALTER TABLE ALTER COLUMN <column name> RESTART WITH <new value>;
据我所知,所有 SQL 数据库都允许您为自增字段设置种子值。
更新:这是identity/auto-increment implementations in the major SQL databases的列表。
【讨论】:
SQL Server 可以。定义自动编号列时,您可以定义起始编号和增量:
IDENTITY(100000, 1)
【讨论】:
我知道 SQL Server 可以做到这一点,我想其他人也可以做到。
使用 SQL Server,您可以设置 ID 列种子(起始编号)和增量值。
【讨论】:
您可以使用使用序列的数据库(如 Oracle 和 PostgreSQL)来实现。创建序列时指定起始值。
This 建议您也可以使用 HSQL。
【讨论】:
不确定 HSQL,但在 MS SQL 中是的,这是可能的。将 ID 设置为自动递增,并将种子值设置为 100,000。
【讨论】: