PostgreSQL 用一个查询增加一个表的序列

Ada*_*ath 2 sql postgresql sequence auto-increment

我想将以下两个查询合二为一:

SELECT pg_get_serial_sequence('purchase_orders', 'id');
SELECT setval('purchase_orders_id_seq', 30000);
Run Code Online (Sandbox Code Playgroud)

但是如果我将上面的 SELECT 放入 setval 的第一个参数中,我会得到:

SELECT setval(SELECT pg_get_serial_sequence('purchase_orders', 'id'), 30000);

ERROR: syntax error at or near "SELECT"
SQL state: 42601
Character: 15
Run Code Online (Sandbox Code Playgroud)

如何传递 setval 的选择结果(“purchase_orders_id_seq”)?

编辑:这样做的原因是;我想像使用它一样使用它,用户只需输入表的名称和将设置序列的数字。

FUNCTION set_id_sequence(TEXT table_name, INTEGER sequence);
Run Code Online (Sandbox Code Playgroud)

Nic*_*nes 5

如果要将子查询结果作为函数参数传递,则需要在其周围加上括号:

SELECT setval((SELECT pg_get_serial_sequence('purchase_orders', 'id')), 30000);
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,SELECT 是多余的;您可以直接调用该函数:

SELECT setval(pg_get_serial_sequence('purchase_orders', 'id'), 30000);
Run Code Online (Sandbox Code Playgroud)