Re: Inserting Data

From: Bob Pawley <rjpawley(at)shaw(dot)ca>
To: Michael Fuhr <mike(at)fuhr(dot)org>
Cc: Postgresql <pgsql-general(at)postgresql(dot)org>
Subject: Re: Inserting Data
Date: 2006-08-26 20:22:49
Message-ID: 032001c6c94d$6d482ff0$8e904618@owner
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Michael

This works perfectly. Thanks very much for your help.

What is the reason for redefining type_ as device_type ???

Bob

----- Original Message -----
From: "Michael Fuhr" <mike(at)fuhr(dot)org>
To: "Bob Pawley" <rjpawley(at)shaw(dot)ca>
Cc: "Postgresql" <pgsql-general(at)postgresql(dot)org>
Sent: Friday, August 25, 2006 12:31 PM
Subject: Re: [GENERAL] Inserting Data

> On Fri, Aug 25, 2006 at 09:35:21AM -0700, Bob Pawley wrote:
>> The library.devices table holds the static information on each
>> of the devices that are available to the user.
>
> Is library.devices.device_number a unique attribute? That is, for
> a given device_number, is there at most one row in library.devices?
> Or can a given device_number have multiple rows with different
> attributes? If multiple rows then is device_number at least unique
> with respect to the type_ column?
>
>> What I want to do is transfer the device_id (serial) identification
>> of each of the devices entered in the device_number column into
>> different tables.
>>
>> By comparing the p_id device_number to the library device_number
>> I should be able to identify whether a device is a monitor (mon)
>> or end-device (end).
>
> If device_number is unique then you could get the device type without
> querying library.devices multiple times. For example:
>
> CREATE OR REPLACE FUNCTION loop_association() RETURNS trigger AS $$
> DECLARE
> device_type varchar;
> BEGIN
> SELECT type_ INTO device_type
> FROM library.devices
> WHERE device_number = NEW.device_number;
>
> IF device_type = 'end' THEN
> INSERT INTO p_id.association (devices_id) VALUES (NEW.devices_id);
> ELSIF device_type = 'mon' THEN
> INSERT INTO p_id.loops (monitor) VALUES (NEW.devices_id);
> END IF;
>
> RETURN NULL;
> END;
> $$ LANGUAGE plpgsql;
>
> However, this might not work as written if I understand what you
> say here:
>
>> The following is my attempt to compare the device_number with the
>> library.devices to determine the device type. This doesn't seem to
>> narrow the field down to a single return. If I use INSERT with SELECT
>> I get multiple rows of identical information or, with 'primary key'
>> the transaction is rejected.
>
> Are you saying that a query like the following might return more
> than one row?
>
> SELECT * FROM library.devices WHERE device_number = 1 AND type_ = 'end';
>
> Or have I misunderstood what you mean by "This doesn't seem to
> narrow the field down to a single return"?
>
> --
> Michael Fuhr

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Douglas McNaught 2006-08-26 20:22:57 Re: implementing a read lock
Previous Message Michael Fuhr 2006-08-26 20:21:18 Re: Content of pg_class.relacl