Re: select for update

Поиск
Список
Период
Сортировка
От Stephan Szabo
Тема Re: select for update
Дата
Msg-id 20021126075344.G77510-100000@megazone23.bigpanda.com
обсуждение исходный текст
Ответ на select for update  (Justin Georgeson <jgeorgeson@lopht.net>)
Список pgsql-sql
On Wed, 20 Nov 2002, Justin Georgeson wrote:

> I'm pretty new to databases in general, and would like to find a spiffy
> way to do something. I want to use two columns from one table to
> populate three columns in two other tables. Assuming t1 is the table I
> want to take the values from, here is the structure of what I want to
> insert into t2 and t3.
>
> t2.id = t1.id
> t2.groupname = t1.username
> t2.owner = t1.username
>
> t3.id = <next available>
> t3.groupid = t1.id
> t3.username = t1.username
> t3.writeperms = 31

If you're trying to populate the entire table and t3.id is a serial, I
think you could do:

insert into t2 (id, groupname, owner) select id, groupname, username from
t1;
insert into t3 (groupid, username, writeperms) select id, username, 31
from t1;

If you mean that on inserts to t1 you want to make rows in the other
tables then you probably want a simple trigger function like (untested):

create function t1_make_t2_and_t3() returns OPAQUE as '
BEGININSERT INTO t2 (id, groupname, owner) values (NEW.id, NEW.username, NEW.username);INSERT INTO t3 (groupid,
username,writeperms) values (NEW.id, NEW.username, 31);return NEW;
 
END;' language 'plpgsql';
create trigger t1_make_t2_and_t3_trig after insert on t1 for each row
execute procedure t1_make_t2_and_t3();



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

Предыдущее
От: Robert Treat
Дата:
Сообщение: Re: celko nested set functions -- tree move
Следующее
От: "Charles H. Woloszynski"
Дата:
Сообщение: Re: How does postgres handle non literal string values