From: thhal at mailblocks.com (Thomas Hallgren) Date: Tue, 05 Jul 2005 21:41:45 +0200 Subject: [Pljava-dev] Triggerdata questions In-Reply-To: References: <42CAE279.7060402@mailblocks.com> Message-ID: 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 > >