6

このようにシーケンス番号を設定しようとすると、次のようになります。

SELECT setval('table_ID_seq', (SELECT max("ID") + 1 FROM table));

次のエラーが発生する可能性があります。

ERROR:  relation "table_ID_seq" does not exist
LINE 1: SELECT setval('table_ID_seq', (SELECT max("ID") + 1 FROM t...
                      ^

********** Error **********

ERROR: relation "table_id_seq" does not exist
SQL Status:42P01
4

2 に答える 2

22

問題は、二重引用符で囲まれていない限り、PostgreSQLが識別子名を正規化することです。

ただし、これは機能しません。

SELECT setval("table_ID_seq", (SELECT max("ID") + 1 FROM table));

代わりに、二重引用符で囲まれたテキストを一重引用符で囲む必要があります。

SELECT setval('"table_ID_seq"', (SELECT max("ID") + 1 FROM table));
于 2013-01-23T16:08:58.260 に答える
0

これまでのすべてのヒントを使用しても、エラーは解決しません。数値から整数への変換を実行する必要があることを確認しました。

整数を強制的に返す必要があります。

select setval ('YOUR_ID_SEQ', (select cast (max (YOUR_COLUMN) as integer) from YOUR_TABLE));
于 2020-06-21T21:53:02.590 に答える