[Pljava-dev] Triggerdata questions

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: Raw Message | Whole Thread | 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
>
>

In response to

Browse pljava-dev by date

  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