Faced some misunderstanding on how does Postgresql functions works. The task is to check if some id
already exists in my DB. If it does - return some data from existing recording. If doesn't - insert some data and return everything back.
CREATE OR REPLACE FUNCTION test(_id varchar, _data varchar[]) RETURNS varchar[] AS $$
BEGIN
IF EXISTS (SELECT 1 FROM my_table WHERE id = _id) THEN
SELECT * FROM my_table WHERE id = _id;
ELSE
INSERT INTO my_table (id, filename, size) VALUES (_data) RETURNING *;
END IF;
END
$$ LANGUAGE plpgsql;
Select returns an error: ERROR: invalid input syntax for integer: "id123"
SELECT test('id123', ARRAY['id123', 'filename', 123456]);
Would be appreciated for any help.