Hi,
I have bunch of rules created for tables to implement upsert functionality.
My problem is our tables gets updated from multiple places , non –necessarily
with the same no of columns. I want to figure out columns are being asked to
be updated
E.g. The rule for the the table base-table is
CREATE OR REPLACE RULE base-table-rule AS
ON INSERT TO base-table
WHERE (EXISTS ( SELECT 1
FROM base-table
WHERE bas-table::x1 = new.x1 ))
DO INSTEAD UPDATE base-table SET x1=new.x1,x2=new.x2,x3
=new.x3,x4=new.x4
WHERE base-table.x1= new.x1;
1) user 1 comes with the below insert
Insert into base-table(x1,x2,x3,x4) values(v1,v2,v3,v4);
2) user 2 comes with the below insert
Insert into base-table(x1,x2) values(v1,v2);
Since user 2 uses only x1 and x2 as its column the rule replaces x3 and x4 with
null.
Is there a way to figure out that only x1 and x2 is being asked for an
updating. In the above example column x1 is the primary key.
Thanks,
Sajeev