Search Postgresql Archives

Re: Can you make a simple view non-updatable?

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

 



On 06/08/2018 01:38 AM, Ryan Murphy wrote:
Hello.

I enjoy using VIEWs.  Often my views are updatable, either automatically (due to being a simple 1-table view, or due to a TRIGGER).  Sometimes they are meant to be just read-only.

Is there any way to set a VIEW to be read-only -- specifically, can I do this for a view that is automatically updatable due to being simple?

Using INSTEAD OF trigger?:

create view ct_vw as select * from container;

insert into ct_vw (c_id, cdesc, cell_per, c_size, c_units) values ('test', 'test container', 1, 2, 4);
INSERT 1836533 1


CREATE OR REPLACE FUNCTION public.vw_ro()
 RETURNS trigger
 LANGUAGE plpgsql
AS $function$
BEGIN
    RAISE NOTICE 'Read only view';
    RETURN NULL;
END;
$function$

CREATE TRIGGER ro_trg INSTEAD OF INSERT or UPDATE or DELETE ON ct_vw FOR EACH ROW EXECUTE procedure vw_ro();

insert into ct_vw (c_id, cdesc, cell_per, c_size, c_units) values ('test', 'test container', 1, 2, 4);
NOTICE:  Read only view
INSERT 0 0

update ct_vw set cell_per = 100 where c_id = '200PT';
NOTICE:  Read only view
UPDATE 0

delete from ct_vw where c_id = '200PT';
NOTICE:  Read only view
DELETE 0



The reason I want this:  It will help me encode into my schema the distinction between views that are supposed to behave like full-fledged "subtypes" of a larger relation and need to be updatable, vs those that are merely a report / literally just a "view".

Thanks!
Ryan


--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx




[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