| From: | thhal at mailblocks(dot)com (Thomas Hallgren) | 
|---|---|
| To: | |
| Subject: | [Pljava-dev] Triggerdata questions | 
| Date: | 2005-07-05 19:41:45 | 
| Message-ID: | thhal-0/HqmA5+IzzYnIj2TiU7j2GRZhK3WqJ@mailblocks.com | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pljava-dev | 
Joao,
There's a couple of misconseptions:
First, the ResultSet returned by getNew() and getOld() on a TriggerData 
are special purpose single row ResultSet used as an access mechanism to 
the NEW and OLD tuples of the trigger. There will never be a statement 
associated with those sets. The getStatement() method will always return 
null.
Second, the td.getNew() is never null on an BEFORE/AFTER INSERT ON EACH 
ROW trigger. An ON EACH ROW trigger will only return null on getNew() if 
the trigger is a BEFORE/AFTER DELETE. All STATEMENT triggers will return 
null on both getNew() and getOld() since there's no tuple associated 
with the statement as a whole.
Third, triggers are not an ideal way of achiving replication. What do 
you do when a transaction is rolled back? You would probably be better 
off looking at stuff like http://gborg.postgresql.org/project/slony1 or 
perhaps the recent ON COMMIT triggers found here 
http://gorda.di.uminho.pt/community.
Regards,
Thomas Hallgren
Joao Afonso wrote:
>  Hi everyone,
>
>  I have a number of tables in a db, let's call it Main, which are a
>replication of tables that are in other databases (more than one). All
>the tables in db Main are empty, they are just used for front end
>access and defining the relations that may exist between the tables
>from the different databases.
>
>  When an insert (for ex.) is issued to db Main a trigger is fired
>that calls a java function that supposedly would re-issue the insert
>to the real db. But i don't know how this can be done. Using the
>triggerdata passed to my function i tried the following:
>
>  (being td the Triggerdata received by the function)     
>
>  Statement stat = (td.getNew()).getStatement();
>
>  The function always throws a nullPointerException. From what i've
>read, the resultSet returned by .getNew() is always null on inserts
>and deletes, so this must be where the exception comes from, but even
>on an update the resultSet seems to be returning a null value.
>
>  And what i want to ask you is if you think this can be done this
>way? If so, what am i doing wrong? If not, do you see another
>solution?
>
>  Thanks in advance.
>_______________________________________________
>Pljava-dev mailing list
>Pljava-dev at gborg.postgresql.org
>http://gborg.postgresql.org/mailman/listinfo/pljava-dev
>  
>
| From | Date | Subject | |
|---|---|---|---|
| Next Message | brice rouanet | 2005-07-08 07:14:35 | [Pljava-dev] oid in triggerdata ? | 
| Previous Message | Joao Afonso | 2005-07-05 18:03:52 | [Pljava-dev] Triggerdata questions |