对包含驼峰案

时间:2018-05-22 14:24:42

标签: postgresql

我想在表格中设置一个序列。所以我用

列出了所有序列
SELECT c.relname 
FROM pg_class c 
WHERE c.relkind = 'S';

给了我例如:tableName_id_seq

当我尝试使用

设置序列时
SELECT setval("tableName_id_seq", (SELECT MAX(id) from "tableName"));

我明白了:

ERROR:  relation "tableName_id_seq" does not exist
LINE 1: SELECT setval('tableName_id_seq', (SELECT MAX(id) from "t...

我已经尝试过单引号和双引号。任何人都知道该怎么做?

1 个答案:

答案 0 :(得分:2)

避免在驼峰情况下创建标识符。使用它真的很无聊:

CREATE SEQUENCE "CamelCaseSeq";
SELECT nextval(format('%I', 'CamelCaseSeq'));
SELECT setval(format('%I', 'CamelCaseSeq'), 6666);
SELECT currval(format('%I', 'CamelCaseSeq'));
SELECT * FROM "CamelCaseSeq";

文档引用:

  

引用标识符也会使其区分大小写,而不引用标识符   名称始终折叠为小写。例如,标识符   FOO,foo和" foo" PostgreSQL被认为是相同的,但" Foo"   和" FOO"不同于这三者和彼此。

更多信息herehere