RE: [HACKERS] Insert into view

From: "Ansley, Michael" <Michael(dot)Ansley(at)intec(dot)co(dot)za>
To: "'Theo Kramer'" <theo(at)flame(dot)co(dot)za>, hackers(at)postgreSQL(dot)org
Subject: RE: [HACKERS] Insert into view
Date: 1999-11-30 12:49:26
Message-ID: 1BF7C7482189D211B03F00805F8527F748C2FD@S-NATH-EXCH2
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

I think this was covered a little while back, but it runs something like
this: a view is a relation, with a select rule (which is the view query).
When you insert into the view (which, like I said, is just another relation,
it actually inserts into the view relation. However, when you select from
it, of course, the select rule fires, and you don't see any of the
information. I suppose you could set up a nice insert rule to insert into
the base tables of the query if you wanted. I normally do this through
stored procs, but this would be essentially the same thing, just nicer
client-side SQL.

I suppose that views could be made so that a tuple insert would fail, but
you should know your db better ;-)

MikeA

>> -----Original Message-----
>> From: Theo Kramer [mailto:theo(at)flame(dot)co(dot)za]
>> Sent: Tuesday, November 30, 1999 12:25 PM
>> To: hackers(at)postgreSQL(dot)org
>> Subject: [HACKERS] Insert into view
>>
>>
>> Any thoughts on the following
>>
>> ------------------------------ testview.sql
>> -------------------------------------
>> drop table testhead; /* If it exists */
>> drop table testline; /* If it exists */
>> drop view testview; /* If it exists */
>>
>> create table testhead (
>> part text
>> );
>>
>> create table testline (
>> part text,
>> colour text,
>> adate datetime default 'now'
>> );
>>
>> create view testview as
>> select testhead.part, testline.colour, testline.adate from
>> testhead, testline
>> where testhead.part = testline.part;
>>
>> insert into testview values ('pen', 'green');
>> insert into testview values ('pen', 'blue');
>> insert into testview values ('pen', 'black');
>>
>> select * from testview;
>>
>> -------------------------------------------------------------
>> ----------------------
>>
>> The inserts report no errors, and when looking into
>> $PGDATA/base/mydb/testview
>> with a hex editor I can see the values inserted.
>>
>> The select on view returns nothing...
>>
>> Should the insert not fail seeing that views are read only ?
>>
>> --
>> --------
>> Regards
>> Theo
>>
>> ************
>>

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 1999-11-30 15:07:59 Re: [HACKERS] Insert into view
Previous Message Peter Eisentraut 1999-11-30 11:29:48 Re: [HACKERS] sort on huge table