自动递增的ID值

5

我有一个带有生成ID的HSQLDB数据库,我想让自动递增的值始终在100,000以上。这在HSQLDB中是否可行?在任何数据库中都可能吗?

6个回答

8
根据HSQL文档的说法:
自1.7.2版本开始,默认使用SQL标准语法,允许指定初始值。支持的格式为(INTEGER GENERATED BY DEFAULT AS IDENTITY(START WITH n, [INCREMENT BY m]) PRIMARY KEY,...)。还添加了BIGINT身份列的支持。因此,IDENTITY列只是具有其默认值由序列生成器生成的INTEGER或BIGINT列。

The next IDENTITY value to be used can be set with the

ALTER TABLE <table name> ALTER COLUMN <column name> RESTART WITH <new value>;

4

在HSQLDB中的操作方法

The next IDENTITY value to be used can be changed with the following statement. Note that this statement is not used in normal operation and is only for special purposes, for example resetting the identity generator:

ALTER TABLE ALTER COLUMN <column name> RESTART WITH <new value>;
据我所知,所有的SQL数据库都允许你为自动增量字段设置种子值。
更新:这里是主要SQL数据库中身份/自动增量实现的列表

嗨,Chris,上面那个第一个链接已经失效了。 - n_x_l

2

在SQL Server中是可以实现的。当定义自动编号列时,您可以定义起始数字和增量:

IDENTITY(100000, 1)

那个值是否始终会高于100,000呢?即使在达到最大值并且ID返回到种子值时也是如此吗? - mainstringargs
是的。身份列是一个BIGINT,其最大值远远超过十亿,所以我怀疑你永远不会达到那个值。 - Chris Van Opstal

0

我知道在SQL Server中可以实现,而且我想其他数据库也应该可以。

在SQL Server中,您可以设置ID列的种子(起始数字)和增量值。


0

你可以使用使用序列的数据库,如Oracle和PostgreSQL来完成。在创建序列时,您需要指定起始值。

这篇文章表明您也可以使用HSQL来完成此操作。


0

不确定HSQL,但在MS SQL中是可以的。将ID设置为自动递增,并将种子值设置为100,000。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接