Re: Inserting Data
| От | Tom Lane |
|---|---|
| Тема | Re: Inserting Data |
| Дата | |
| Msg-id | 25094.1156371501@sss.pgh.pa.us обсуждение |
| Ответ на | Re: Inserting Data (Bob Pawley <rjpawley@shaw.ca>) |
| Список | pgsql-general |
Bob Pawley <rjpawley@shaw.ca> writes:
> Perhaps we can look at the following as a simple example of what is
> happening-
> ---------
> create or replace function loop_association() returns trigger as $$
> begin
> Insert Into p_id.loops (monitor)
> select new.devices_id
> from p_id.devices ;
> return null ;
> end ;
> $$ language plpgsql ;
> create trigger loop after insert on p_id.devices
> for each row execute procedure loop_association();
> ------
> This trigger and procedure gives a single row on the first insert on an
> otherwise blank table. However it produces two identical rows of the second
> device_id on the second insert and three identical rows of the third
> device_id on the third insert. (This is the only trigger on the table)
Well, of course, because that's an unqualified "select", so each call
will copy *all* of p_id.devices into p_id.loops. Methinks what you
really want is to insert the NEW row, not the whole table.
regards, tom lane
В списке pgsql-general по дате отправления: