From: | "Ross J(dot) Reedstrom" <reedstrm(at)rice(dot)edu> |
---|---|
To: | Yudha Setiawan <yudha(at)BonBon(dot)net> |
Cc: | pgsql-admin(at)postgresql(dot)org |
Subject: | Re: Do Something before Abort on Trigger ??? |
Date: | 2003-01-17 15:42:29 |
Message-ID: | 20030117154229.GA15778@wallace.ece.rice.edu |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-admin |
On Wed, Jan 15, 2003 at 04:08:40PM +0700, Yudha Setiawan wrote:
> Somebody gimme your hand plz.
>
> Using my previous Database I used to be like that;
> " ALTER TRIGGER tr_T_DtlPO ON dbo.T_DtlPO FOR UPDATE AS
> bla..bla..bla...
> IF @OldQty <> @NewQty BEGIN
> ROLLBACK
> INSERT INTO T_My_ListError(fc_code,fv_descript)
> VALUES('12345','No Authority to Change Qty')
> END"
> So I'v already write the error code to table T_My_ListError before aborting this session
> -----------------------------------------------------------------------------------------
> And I Tried on Postgre like that;
> " create or replace function fn_tr_t_dtlpo returns trigger as'
> begin
> bla..bla...;
> if new.fn_qty != old.fn_qty then
> raise exception ''Error 12345'';
> insert into t_my_listerror(fc_code,fv_descript)
> values(''12345'',''No Authority to Change Qty'');
> end if;
> end;' language 'plpgsql';
> "
> But I Couldn't get any records at all on t_my_listerror. Even when put the insert statement
> (insert into t_my_listerror...bla..bla) before raise exception.
Hmm, I think you may be out of luck, if you really _have_ to abort the
transaction, since PostgreSQL has no way to violate the transactional
integrity: anything you do inside a function that's in a transaction
that fails will rollback. Alternatively, you can supress the UPDATE
by setting new.fn_qty = old.fn_qty, INSERTing a line in your errors
table, and even firing off a NOTICE so an LISTENing frontend can tell
the user about the problem. This will let the rest of the transaction
commit, however.
Sorry,
Ross
--
Ross Reedstrom, Ph.D. reedstrm(at)rice(dot)edu
Research Scientist phone: 713-348-6166
The Connexions Project http://cnx./rice.edu fax: 713-348-6182
Rice University MS-39
Houston, TX 77005
From | Date | Subject | |
---|---|---|---|
Next Message | Ross J. Reedstrom | 2003-01-17 15:54:50 | Re: OT: seeking query help, where? |
Previous Message | Bruno Wolff III | 2003-01-17 15:12:03 | Re: OT: seeking query help, where? |