Search Postgresql Archives

Re: CREATE RULE with WHERE clause

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

 




On Jun 5, 2007, at 8:11 , Ranieri Mazili wrote:

CREATE RULE rule_role_sul AS
   ON SELECT TO t1 WHERE roles = 'role_sul'
   DO INSTEAD        SELECT field1, field2 FROM t2;

CREATE RULE rule_role_sul AS
   ON SELECT TO t1 WHERE roles = 'role_norte'
   DO INSTEAD        SELECT field3, field4 FROM t2;

I don't believe you can include a WHERE clause like this. From the documentation[1]:

http://www.postgresql.org/docs/8.2/interactive/rules-views.html#RULES- SELECT

Currently, there can be only one action in an ON SELECT rule, and it must be an unconditional SELECT action that is INSTEAD. This restriction was required to make rules safe enough to open them for ordinary users, and it restricts ON SELECT rules to act like views.

You can use views instead (which are implemented using the rule system), but I'm not sure how you would handle it in this case. I believe you'd have to implement two views:

CREATE VIEW rule_role_sul AS
SELECT field1, field2
FROM t2
WHERE roles = 'role_sul';

CREATE VIEW rule_role_norte AS
SELECT field3, field4
FROM t2
WHERE roles = 'role_norte';

Hope this helps.

Michael Glaesemann
grzm seespotcode net




[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