【问题标题】:PostgresSQL custom sequencePostgresQL 自定义序列
【发布时间】:2019-12-15 16:50:22
【问题描述】:

我的nextval 函数有问题,我的数据库中有一个名为InternalCodes 的自定义序列,当我想进行这样的插入时:

insert into "Membership"
  ("Name", "Code", "Price", "Caducity", "Status", "Type")
values
  ('asd', nextval("InternalCodes"), 1, 2, true, 0);

PostgreSQL 向我返回以下错误:

org.jkiss.dbeaver.model.sql.DBSQLException:SQL 错误 [42703]:错误:列不存在 «InternalCodes»

【问题讨论】:

    标签: sql postgresql sequence


    【解决方案1】:

    你需要使用单引号而不是双引号:

    test=# create sequence seq_test;
    test=# select nextval("seq_test");
    ERROR:  column "seq_test" does not exist
    LINE 1: select nextval("seq_test");
                           ^
    test=# select nextval('seq_test');
    nextval 
    ---------
           1
    

    在您的情况下,由于您的序列名称包含大写字母,因此您实际上需要同时使用两者:

    insert into "Membership"("Name", "Code", "Price","Caducity","Status","Type") 
    values('asd', nextval('"InternalCodes"'), 1,2,true,0)
    ;
    

    【讨论】:

      【解决方案2】:

      你需要使用字符串引号:

      nextval('"InternalCodes"')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-11
        • 2017-11-27
        • 1970-01-01
        相关资源
        最近更新 更多