Re: Multi-Table Insert/Update Strategy - Use Functions/Procedures?

Поиск
Список
Период
Сортировка
От Joshua Berkus
Тема Re: Multi-Table Insert/Update Strategy - Use Functions/Procedures?
Дата
Msg-id 1358180847.27317.1453929936288.JavaMail.zimbra@agliodbs.com
обсуждение исходный текст
Ответ на Multi-Table Insert/Update Strategy - Use Functions/Procedures?  (Don Parris <parrisdc@gmail.com>)
Ответы Re: Multi-Table Insert/Update Strategy - Use Functions/Procedures?  (Dane Foster <studdugie@gmail.com>)
Re: Multi-Table Insert/Update Strategy - Use Functions/Procedures?  (Don Parris <parrisdc@gmail.com>)
Список pgsql-general

> 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)


В списке pgsql-general по дате отправления:

Предыдущее
От: "David G. Johnston"
Дата:
Сообщение: Re: Multi-Table Insert/Update Strategy - Use Functions/Procedures?
Следующее
От: Dane Foster
Дата:
Сообщение: A contradiction in 13.2.1