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

Reply via email to