pg.ddx.io  pljava-dev@postgresql.org mailing list archive  
help / color / mirror / Atom feed
Subject: [Pljava-dev] Triggerdata questions
Date: Tue, 05 Jul 2005 21:41:45 +0200
Message-ID: <thhal-0/HqmA5+IzzYnIj2TiU7j2GRZhK3WqJ@mailblocks.com> (raw)
In-Reply-To: <ce04e69f050705110339fc5c9e@mail.gmail.com>
References: <ce04e69f050705110339fc5c9e@mail.gmail.com>
	<42CAE279.7060402@mailblocks.com>
	<thhal-0+3qmA52IzzYzhy/U2pDmWQDTbKKQjr@mailblocks.com>

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
>  
>






view thread (2+ messages)

Message-ID: <thhal-0/HqmA5+IzzYnIj2TiU7j2GRZhK3WqJ@mailblocks.com>
Permalink:  ../thhal-0%2FHqmA5+IzzYnIj2TiU7j2GRZhK3WqJ@mailblocks.com/
Also on:    postgresql.org/message-id/thhal-0/HqmA5+IzzYnIj2TiU7j2GRZhK3WqJ@mailblocks.com

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pljava-dev@postgresql.org
  Subject: Re: [Pljava-dev] Triggerdata questions
  In-Reply-To: <thhal-0/HqmA5+IzzYnIj2TiU7j2GRZhK3WqJ@mailblocks.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox