Возврат вставленных insert данных
- Автор: Silver
- Просмотров: 321
Бывают случаи, когда надо вернуть какие-то данные записей, вставленных командой insert.
Вот пример функции, которая сначала добавляет данные пользователя, а потом использует полученнй id для добавления в группы:
CREATE OR REPLACE FUNCTION add_user(CHARACTER VARYING, CHARACTER VARYING, CHARACTER VARYING, CHARACTER VARYING, CHARACTER VARYING, TIMESTAMP WITH TIME zone, BOOLEAN, INTEGER[]) RETURNS void AS $BODY$ DECLARE _uid INTEGER; gid INTEGER; BEGIN WITH uid(id) AS (INSERT INTO auth_user (username,last_name,first_name,email,"password",last_login,is_active) VALUES ($1,$2,$3,$4,$5,$6,$7) returning id ) SELECT id INTO _uid FROM uid; foreach gid IN array $8 loop INSERT INTO auth_user_groups (user_id,group_id) VALUES (_uid,gid); END loop; END; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION add_user(CHARACTER VARYING, CHARACTER VARYING, CHARACTER VARYING, CHARACTER VARYING, CHARACTER VARYING, TIMESTAMP WITH TIME zone, BOOLEAN, INTEGER[]) OWNER TO postgres;