创建和使用序列

    上级主题: 定义数据库对象

    CREATE SEQUENCE 命令用给定的序列名称创建并且初始化一个特殊的单行序列生成器表。序列名称必须和同一个方案中任何其他序列、表、索引或者视图的名称不同。例如:

    在使用CREATE SEQUENCE创建了一个序列生成器表之后,用户可以使用nextval函数来操作该序列。例如,要向表中插入一个得到序列中下个值的行:

      一次nextval操作永不会被回滚。一个被取出的值被认为是已经用掉,即便执行nextval的事务失败也是如此。这意味着失败的事务可能在该序列的已分配值中留下未使用的空洞。 setval操作也永不会被回滚。

      注意如果启用了镜像,在UPDATE或DELETE语句中不允许使用nextval函数。在Greenplum数据库中不支持函数 currval和。

      为了检查一个序列的当前设置,可查询该序列表:

      任何在ALTER SEQUENCE命令中没有设置的参数会保持它们之前的设置。

      DROP SEQUENCE命令移除一个序列生成器表。例如:

      一个序列可以被用在CREATE TABLE命令中(取代 SERIAL或者BIGSERIAL类型):