admin

PostgreSQL通过一个查询增加表的顺序

sql

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

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

但是,如果我将较高的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

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

编辑:这样做的原因是;我想将其像一个函数一样使用,用户只需要输入表的名称和将要设置顺序的数字即可。

FUNCTION set_id_sequence(TEXT table_name, INTEGER sequence);

阅读 233

收藏
2021-07-01

共1个答案

admin

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

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

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

SELECT setval(pg_get_serial_sequence('purchase_orders', 'id'), 30000);
2021-07-01