Я пытаюсь ввести данные INSERT через функцию postgres, и я не могу заставить ее работать. Я получаю сообщение об ошибке с указаниемФункция Postgres для вставки массивов
ERROR: function unnest(integer) does not exist SQL state: 42883 Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Я использую Postgres 9.5, и моя функция выглядит следующим образом:
CREATE FUNCTION insert_multiple_arrays(
some_infoid INTEGER[],
other_infoid INTEGER[],
some_user_info VARCHAR,
OUT new_user_id INTEGER
)
RETURNS INTERGER AS $$
BEGIN
INSERT INTO user_table (user_info) VALUES ($3) RETURNING user_id INTO new_user_id;
INSERT INTO some_info_mapper (user_id, some_info_id) SELECT new_user_id, unnest($1);
INSERT INTO other_info_mapper (user_id, other_info_id) SELECT new_user_id,unnest($2);
END;
$$ LANGUAGE plpgsql;
Я буду называть хранимую процедуру из моего внутреннего интерфейса через ЗЕЬЕСТ. Примером может служить так:
createUser(user, callback){
let client = this.getDb();
client.query("SELECT insert_multiple_arrays($1, $2, $3)",
[user.some_info_ids, user.other_info_ids, user.info], function(err, results){
if(err){
callback (err);
}
callback(null, results);
});
};
Выходной сигнал, что я ожидал бы быть следующим:
user_table
user_id | user_info |
----------------------+-----------------+
1 | someInfo |
some_info_mapper
user_id | some_info_id |
----------------------+-----------------+
1 | 33 |
1 | 5 |
other_info_mapper
user_id | other_info_id |
----------------------+-----------------+
1 | 8 |
1 | 9 |
1 | 22 |
1 | 66 |
1 | 99 |
Как обрабатывать эту ошибку? Нужно ли мне делать какую-то обработку для моих данных, чтобы поместить ее в формат, который принимает postgres?
Какого типа является '' user.some_info_ids' и user.other_info_ids'? Являются ли они целыми числами? Вот что говорит ошибка. – cachique
Да, поля являются целыми числами, как и параметры запроса sql. –
1-Поля должны быть массивом целых чисел, а не целыми. и 2- Ваш драйвер должен поддерживать передающие массивы в подготовленных операциях. Какую версию languaje/driver вы используете в своем кодовом коде? – cachique