Search Postgresql Archives

Re: Where

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Thanks again.

I'll give it a try.

Bob


----- Original Message ----- From: "Uwe C. Schroeder" <uwe@xxxxxxxxx>
To: "Bob Pawley" <rjpawley@xxxxxxx>
Cc: <pgsql-general@xxxxxxxxxxxxxx>
Sent: Thursday, November 10, 2005 7:44 PM
Subject: Re:  Where


one full row - NOT two or more rows.


On Thursday 10 November 2005 17:23, Bob Pawley wrote:
By 'one record' do you mean one full row or one column of one row??

Bob

----- Original Message -----
From: "Uwe C. Schroeder" <uwe@xxxxxxxxx>
To: "Bob Pawley" <rjpawley@xxxxxxx>
Cc: <pgsql-general@xxxxxxxxxxxxxx>
Sent: Thursday, November 10, 2005 5:05 PM
Subject: Re:  Where

> This will work if you can guarantee that it's only one record
>
> INSERT INTO pipe (fluid_id,contain) SELECT (fluid_id,contain) FROM
> process WHERE contain='ip'
>
> otherwise (more than one record) you have to loop over the resultset,
> something like (off the top of my head)
>
> create or replace function base() returns trigger as $$
> DECLARE
>  myrow RECORD;
> BEGIN
>    insert into pipe (fluid_id) values (new.fluid_id);
>    for myrow in select * from process where contain = 'ip' loop
>         insert into pipe(fluid_id,contain) values
> (row.fluid_id,row.contain);
>         if not found then
>            raise exception 'error creating record';
>        end if;
>    end loop;
>    return NULL;
> END;
>
> On Thursday 10 November 2005 15:56, Bob Pawley wrote:
>> Thank you - what is the correct command???
>>
>> Bob
>>
>> ----- Original Message -----
>> From: "Uwe C. Schroeder" <uwe@xxxxxxxxx>
>> To: <pgsql-general@xxxxxxxxxxxxxx>
>> Cc: "Bob Pawley" <rjpawley@xxxxxxx>
>> Sent: Thursday, November 10, 2005 3:34 PM
>> Subject: Re:  Where
>>
>> > SELECT INTO xxxx
>> > tries to create table xxxx
>> > See:
>> > http://www.postgresql.org/docs/8.0/interactive/sql-selectinto.html
>> >
>> > Why do you do the select into anyways? It does nothing.
>> > If you try to update table pipe with the select result you have the
>> > wrong
>> > command.
>> >
>> > UC
>> >
>> > On Thursday 10 November 2005 14:24, Bob Pawley wrote:
>> >> I am attempting to transfer the data in the fluid_id column of >> >> table
>> >> process into column fluid_id of table pipe.
>> >>
>> >> This should happen only when column contain of table process holds
>> >> the value 'ip'.
>> >>
>> >> Here is the command that I am having trouble with.
>> >> -------
>> >> create table process (fluid_id integer primary key, process >> >> varchar,
>> >> contain varchar);
>> >>
>> >> create table pipe ( fluid_id integer not null, contain varchar);
>> >>
>> >>
>> >>
>> >> create or replace function base() returns trigger as $$
>> >>
>> >>             begin
>> >>
>> >>
>> >>
>> >>             insert into pipe (fluid_id) values (new.fluid_id);
>> >>
>> >>             select * into pipe from process where contain = 'ip';
>> >>
>> >>
>> >>
>> >>             return null;
>> >>
>> >>
>> >>
>> >>             end;
>> >>
>> >>             $$ language plpgsql;
>> >>
>> >>
>> >>
>> >>             create trigger trig1 after insert on process
>> >>
>> >>
>> >>
>> >>             for each row execute procedure base();
>> >>
>> >>
>> >>
>> >>     insert into process (fluid_id, process, contain)
>> >>
>> >>             values ('2', 'water', 'ip');
>> >>
>> >> -------------------
>> >> On inserting data this error comes back -
>> >> -------
>> >> ERROR:  relation "pipe" already exists
>> >> CONTEXT:  SQL statement "SELECT  * INTO  pipe from process where
>> >> contain
>> >> =
>> >> 'ip'" PL/pgSQL function "base" line 4 at SQL statement
>> >> ------
>> >> Of course the table pipe does already exist - it is a permanent
>> >> table.
>> >>
>> >> Is the program looking for some other target??  Perhaps a temporary
>> >> table??
>> >>
>> >>
>> >>
>> >> Or am I completely screwed up???
>> >>
>> >>
>> >>
>> >> Bob
>> >
>> > --
>> > UC
>> >
>> > --
>> > Open Source Solutions 4U, LLC 2570 Fleetwood Drive
>> > Phone:  +1 650 872 2425 San Bruno, CA 94066
>> > Cell:   +1 650 302 2405 United States
>> > Fax:    +1 650 872 2417
>
> --
> UC
>
> --
> Open Source Solutions 4U, LLC 2570 Fleetwood Drive
> Phone:  +1 650 872 2425 San Bruno, CA 94066
> Cell:   +1 650 302 2405 United States
> Fax:    +1 650 872 2417
>
> ---------------------------(end of > broadcast)---------------------------
> TIP 3: Have you checked our extensive FAQ?
>
>               http://www.postgresql.org/docs/faq

--
UC

--
Open Source Solutions 4U, LLC 2570 Fleetwood Drive
Phone:  +1 650 872 2425 San Bruno, CA 94066
Cell:   +1 650 302 2405 United States
Fax:    +1 650 872 2417

---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faq


---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

              http://www.postgresql.org/docs/faq

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux