Re: Multi-Table Insert/Update Strategy - Use Functions/Procedures?
От | Dane Foster |
---|---|
Тема | Re: Multi-Table Insert/Update Strategy - Use Functions/Procedures? |
Дата | |
Msg-id | CA+WxinLRagCm7aYUt79bR2BVP12U9B3UvkCZTpOnVEPkeH=KaA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Multi-Table Insert/Update Strategy - Use Functions/Procedures? (Joshua Berkus <josh@agliodbs.com>) |
Список | pgsql-general |
On Wed, Jan 27, 2016 at 4:25 PM, Joshua Berkus <josh@agliodbs.com> wrote:
> Am I on the right track, or is there some better way to set this up? My
> understanding is that views really aren't meant for insert/update
> operations, and I have seen on the web that using views to insert/update is
> a bit tricky - and still requires a procedure with a rule on the view.
Why not use updatable CTEs? That's what they're for.
WITH update_contact as (
INSERT INTO contacts ( contact_id, name )
VALUES ( nexval('contacts_id_seq'), 'Joe' )
RETURNING contact_id ),
new_cont_ids AS (
SELECT contact_id FROM update_contact;
),
insert_phones AS (
INSERT INTO phones ( phone_id, contact_id, phone_no )
SELECT ( nextval('phone_id_seq'), contact_id, '415-555-1212' )
FROM new_cont_ids
RETURNING phone_id
) ...
I think you get the idea. On 9.3 or later, this is the way to go.
--
Josh Berkus
Red Hat OSAS
(opinions are my own)
--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general
In general do updateable CTEs have lower overhead than functions?
Dane
В списке pgsql-general по дате отправления: