【问题标题】:Auto incrementing ID value自动递增 ID 值
【发布时间】:2010-10-04 06:07:51
【问题描述】:

我有一个带有生成 ID 的 HSQLDB 数据库,我希望自动递增值始终高于 100,000。这对 HSQLDB 可行吗?任何数据库都可以做到这一点吗?

【问题讨论】:

    标签: sql primary-key identity hsqldb


    【解决方案1】:

    根据HSQL Documentation

    自 1.7.2 起,SQL 标准语法 默认情况下使用,它允许 要指定的初始值。这 支持的形式是(整数 由默认身份生成(开始 使用 n,[按 m 递增])主键, ...)。还增加了对 BIGINT 标识列。因此, IDENTITY 列只是一个 INTEGER 或 BIGINT 列及其 序列生成的默认值 生成器。

    ...

    下一个要使用的 IDENTITY 值可以 设置为

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

    【讨论】:

      【解决方案2】:

      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的列表。

      【讨论】:

      • 嘿,克里斯,上面的第一个链接已失效。
      【解决方案3】:

      SQL Server 可以。定义自动编号列时,您可以定义起始编号和增量:

      IDENTITY(100000, 1)
      

      【讨论】:

      • 那么该值会始终高于 100,000 吗?即使达到最大值并以种子值生成 ID?
      • 是的。标识列是一个 BIGINT,其最大值远远超过 10 亿,所以我怀疑你永远不会达到这个目标。
      【解决方案4】:

      我知道 SQL Server 可以做到这一点,我想其他人也可以做到。

      使用 SQL Server,您可以设置 ID 列种子(起始编号)和增量值。

      【讨论】:

        【解决方案5】:

        您可以使用使用序列的数据库(如 Oracle 和 PostgreSQL)来实现。创建序列时指定起始值。

        This 建议您也可以使用 HSQL。

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 2015-03-10
            • 1970-01-01
            • 2012-12-14
            • 2014-08-03
            • 2012-03-04
            • 2018-02-11
            • 2015-07-05
            • 2014-10-01
            • 1970-01-01
            相关资源
            最近更新 更多