将整数附加到数组(使用express和pg-promise)

时间:2019-09-22 18:15:10

标签: arrays postgresql pg-promise

我正在使用PostgreSQL文档中的array_append函数,但看不到我做错了什么,却出现以下错误:

error:  { error: invalid input syntax for integer: "{22}"

以下是查询:

UPDATE epics 
   SET collection_ids = array_append(collection_ids, '{${id}}') 
WHERE id = ${epicId}

这是表格的代码:

CREATE TABLE epics (
  id SERIAL PRIMARY KEY,
  title varchar,
  collection_ids SMALLINT[]
);

2 个答案:

答案 0 :(得分:2)

根据@abelisto的评论,这是最好的解决方案:

UPDATE epics SET collection_ids = collection_ids || ${id}::SMALLINT
WHERE id = ${epicId}

它更优雅,因为它是SQL原生的,没有类型歧义,甚至在需要时甚至支持数组(下面我们假设${id}作为数组传入):

UPDATE epics SET collection_ids = collection_ids || ${id}::SMALLINT[]
WHERE id = ${epicId}

由于在pg-promise中,1,2,3的数组将被自动格式化为array[1,2,3]

答案 1 :(得分:-1)

UPDATE epics SET collection_ids = array_append(collection_ids, '${id}') WHERE id = ${epicId}

工作。