传递postgres序列作为查询语句参数

时间:2017-02-16 18:34:04

标签: javascript node.js postgresql

我在postgres EX中设置了一个序列:seq_id_gen。当我将此序列传递给我的静态查询时,传入字符串并且它不会被评估。有没有办法剥去报价?有没有人知道如何在不动态构建此查询的情况下执行此操作?

我的SQL查询是

INSERT into table (SELECT $1, $2, $3,$4)

在我的函数中,我通过

调用此查询
query(myquery, ['currval(\'seq_id_gen\')' , param1, param2, param3]);  

该声明变为

会发生什么
INSERT into table (SELECT 'currval(\'seq_id_gen\')' , param1, param2, param3)

1 个答案:

答案 0 :(得分:0)

如果要在其中一个参数中评估SQL代码,则必须使用动态SQL,如下所示:

EXECUTE 'INSERT into table VALUES ('
        || param1 || ', '
        || param2 || ', '
        || param3 || ', '
        || param4 ')';

确保没有用户生成的输入可以与这样的结构一起使用,因为它会使您容易受到SQL injection的攻击。<​​/ p>