From: | Michael Davis <mdavis(at)sevainc(dot)com> |
---|---|
To: | PostgreSQL-SQL <pgsql-sql(at)postgresql(dot)org> |
Subject: | Updating two table via a Rule? |
Date: | 2001-01-01 10:19:37 |
Message-ID: | 01C073A1.ADE7EA80.mdavis@sevainc.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
How do I create a rule for a view that inserts into two tables?
I have a view based on two tables. I would like to create insert, update,
and delete rules for this view to:
- update both tables when the view is updated
- delete from both tables when a record is deleted from the view
- insert into both table when a record is inserted into the view
Here is the view:
CREATE VIEW reg_PaymentLines AS
SELECT P.MemberID, P.PaymentsID, P.PaymentDate,
PL.PaymentLineID, PL.PaymentTypesID, PL.Amount
FROM Payments P, PaymentLines PL
WHERE P.PaymentsID = PL.PaymentsID;
I have tried to create two insert rules on the view as follows:
CREATE RULE reg_PaymentLines_r1 AS ON INSERT TO reg_PaymentLines
DO INSTEAD
INSERT INTO PaymentLines (PaymentsID, PaymentLineID, Amount)
VALUES (new.PaymentsID, new.PaymentLineID,
new.Amount);
CREATE RULE reg_PaymentLines_r2 AS ON INSERT TO reg_PaymentLines
DO INSTEAD
INSERT INTO Payments (MemberID, PaymentsID, PaymentDate,
Amount)
VALUES (new.MemberID, new.PaymentsID, new.PaymentDate,
new.Amount);
PostgreSQL allows me to create the two rules. However, when I insert into
the view, I get a foreign key constraint violation because the PaymentID
does not exist in the Payments table. There is a foreign key constraint
from PaymentLines.PaymentsID to Payments.PaymentsID. It appears that
either:
- the insert into the PaymentLines table before the insert occurs in the
Payments tables
- or that the insert into the PaymentLines table is not aware of the insert
into the Payments table.
- or that the insert to the Payments table is being ignored
I get the same error regardless of how the two rules are created (i.e. same
error if rule #2 is applied before rule #1).
Any suggestions on how to get this to work? Any help is greatly
appreciated.
Thanks, Michael Davis
From | Date | Subject | |
---|---|---|---|
Next Message | Michael Davis | 2001-01-01 10:41:04 | RE: Updating two table via a Rule? |
Previous Message | Oleg Bartunov | 2000-12-31 22:28:20 | Re: Arrays |