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)
如果要将子查询结果作为函数参数传递,则需要在其周围加上括号:
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)