Subject | RE: [firebird-support] Re: multiple inserts in trigger |
---|---|
Author | Ross Ryding |
Post date | 2007-07-11T14:51:35Z |
Ok, I broke each test off into a separate trigger and it works fine. This
does not make sense to me since it should be the same difference. In single
file many tests I am doing a After Update so the second fire of the UPDATE
trigger for the second field change should test the first value as no change
and thus skip it. I tried doing one as an insert command and the other as a
select command reducing the procedure just down to two tests and it still
hangs. When I do one at a time it inserts the record when I do two changes
with two tests in one trigger neither update the audit file.
Does this make sense to anyone?
I really thought I was smarter than this
-----Original Message-----
From: firebird-support@yahoogroups.com
[mailto:firebird-support@yahoogroups.com] On Behalf Of Sasha
Sent: Wednesday, July 11, 2007 7:59 AM
To: firebird-support@yahoogroups.com
Subject: RE: [firebird-support] Re: multiple inserts in trigger
true if either a or b is null and that's by design.
If you want to test for nulls you must rewrite it like this:
if ((a is null and b is null) or a=b) then -- your test condition might be
different
begin
-- something
end else
begin
-- something else
end
or simpler like this:
if (a is not distinct from b) then
something;
else
something else
I think is [not] distinct was introduced in FB 2.0.0 so if you are running
earlier version you will not be able to use it, but you should check on
that.
Sasha
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Visit http://www.firebirdsql.org and click the Resources item
on the main (top) menu. Try Knowledgebase and FAQ links !
Also search the knowledgebases at http://www.ibphoenix.com
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Yahoo! Groups Links
does not make sense to me since it should be the same difference. In single
file many tests I am doing a After Update so the second fire of the UPDATE
trigger for the second field change should test the first value as no change
and thus skip it. I tried doing one as an insert command and the other as a
select command reducing the procedure just down to two tests and it still
hangs. When I do one at a time it inserts the record when I do two changes
with two tests in one trigger neither update the audit file.
Does this make sense to anyone?
I really thought I was smarter than this
-----Original Message-----
From: firebird-support@yahoogroups.com
[mailto:firebird-support@yahoogroups.com] On Behalf Of Sasha
Sent: Wednesday, July 11, 2007 7:59 AM
To: firebird-support@yahoogroups.com
Subject: RE: [firebird-support] Re: multiple inserts in trigger
> I would have never thought of that, great idea and greatlyIn a nutshell yes, but you must understand that if(a = b) will never return
> appreciated. I
> assume that distinct understands the NULL state.
>
true if either a or b is null and that's by design.
If you want to test for nulls you must rewrite it like this:
if ((a is null and b is null) or a=b) then -- your test condition might be
different
begin
-- something
end else
begin
-- something else
end
or simpler like this:
if (a is not distinct from b) then
something;
else
something else
I think is [not] distinct was introduced in FB 2.0.0 so if you are running
earlier version you will not be able to use it, but you should check on
that.
Sasha
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Visit http://www.firebirdsql.org and click the Resources item
on the main (top) menu. Try Knowledgebase and FAQ links !
Also search the knowledgebases at http://www.ibphoenix.com
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Yahoo! Groups Links