Обсуждение: Re-write rules on views
Hi all,
The docs seem slim in this department.. what is the proper syntax for an
update to a view with multiple tables?
Here's a view I'd like to update:
CREATE VIEW "users_perms_view" AS
SELECT
users.user_id,
users.username,
users.name_first,
users.name_last,
permissions.permission_name,
permissions.permission_description
FROM
users,
users_permissions,
permissions
WHERE
((users_permissions.user_id = users.user_id) AND
(users_permissions.permission_id = permissions.permission_id));
This rule works fine as far as it goes:
CREATE RULE "update_users_perms_view" AS
ON UPDATE TO users_perms_view DO INSTEAD
UPDATE
users SET
username = NEW.username,
password = NEW.password,
name_first = NEW.name_first,
name_last = NEW.name_last,
active = NEW.active,
WHERE
user_id = OLD.user_id;
How do I update the users_permissions and permissions table?
Thanx,
Rip <rip@onlineinfo.net> writes:
> The docs seem slim in this department.. what is the proper
> syntax for an update to a view with multiple tables?
I think you are looking for a multiple-action rule. Just put square
brackets, or parens if you prefer, around the list of action queries.
regards, tom lane
Tom Lane wrote:
> Rip <rip@onlineinfo.net> writes:
> > The docs seem slim in this department.. what is the proper
> > syntax for an update to a view with multiple tables?
>
> I think you are looking for a multiple-action rule. Just put square
> brackets, or parens if you prefer, around the list of action queries.
I recommend parens. Brackets are going away in 7.3. TODO has:
* Remove brackets as multi-statement rule grouping, must use parens
and I will attack that easy one soon. :-)
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
Thanx for the help. Actually I discovered the real problem.... it's a php bug. when php hits the ';' in the multiple action it assumes the query is over and starts a new one. I'll post this bug report to php and back to the list. At 06:28 PM 2/27/02 -0500, you wrote: >Tom Lane wrote: > > Rip <rip@onlineinfo.net> writes: > > > The docs seem slim in this department.. what is the proper > > > syntax for an update to a view with multiple tables? > > > > I think you are looking for a multiple-action rule. Just put square > > brackets, or parens if you prefer, around the list of action queries. > >I recommend parens. Brackets are going away in 7.3. TODO has: > > * Remove brackets as multi-statement rule grouping, must use parens > >and I will attack that easy one soon. :-) > >-- > Bruce Momjian | http://candle.pha.pa.us > pgman@candle.pha.pa.us | (610) 853-3000 > + If your life is a hard drive, | 830 Blythe Avenue > + Christ can be your backup. | Drexel Hill, Pennsylvania 19026