我正在使用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[]
);
答案 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}
工作。