首页 > 解决方案 > SQL 序列查询下一个值总是最后一个值 + 10

问题描述

我创建了一个 SQL 查询,它创建了一个始终比上次使用的值高 10 的新数字(例如,如果添加了一家新公司,那么公司一的数字为 10,该公司将获得数字 20)。

但我得到一个错误,我不知道为什么它不会执行。

我的查询是:

CREATE SEQUENCE anr_num_gen
    START WITH    anr = UPPER(anr)
    INCREMENT BY  10;

但我得到这个错误:

bedrijf.public> 创建序列 anr_num_gen
以 anr = UPPER(anr) 开始,
递增 10

[2021-09-13 22:51:28] [42601] 错误:“anr”处或附近的语法错误
[2021-09-13 22:51:28] 位置:50

有人能帮助我吗?

标签: sqlpostgresql

解决方案


start with部分无效。anr在这个地方没有定义。你期望它来自哪里?

你可能只是想要这个:

CREATE sequence anr_num_gen
    start with      1
    increment by    10;

或者,也许您正在查看anr特定表中的列。在这种情况下,您必须分两步进行:

CREATE sequence anr_num_gen
    start with      1
    increment by    10;
SELECT setval(
         'anr_num_gen'::regclass,
         (SELECT MAX(anr)::bigint FROM "my_table")
       );

推荐阅读