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