Subject | mon$call_stack, FK cascade |
---|---|
Author | unordained |
Post date | 2013-12-05T19:38:17Z |
Inside some of my triggers, I'm trying to detect if I'm at a top-level user-
requested operation, or nested inside other triggers. (I've done this for some
REDO triggers before, here I'm doing it for validation reasons -- there are things
I don't want a user doing directly, but don't mind cascading from other tables.)
I'm using an autonomous transaction from inside my trigger to check mon$call_stack
to see how deeply-nested my current statement is (active statement of current
transaction). I can see my own trigger, and I can see other custom triggers if I'm
nested in those, but it seems I can't see implied triggers that are part of FK-
cascade rules. Not even if I remove the restriction on mon$object_type = 2 /*
triggers only */ (I had hoped maybe they would show up as a 4, validation,
instead?). Yet if I throw an exception inside that custom trigger, the stack-trace
I get back (visible in flamerobin) DOES show the presence of CHECK_1234 around my
trigger. It's not like the cascade-trigger ended, then caused my trigger to fire -
- it's very much still active during the execution of my trigger.
Am I crazy? Do the implied triggers that handle cascades not show up in
mon$call_stack? Only user-defined triggers and procedures?
(Firebird 2.5.2 stock, x64, on win64.)
-Philip
requested operation, or nested inside other triggers. (I've done this for some
REDO triggers before, here I'm doing it for validation reasons -- there are things
I don't want a user doing directly, but don't mind cascading from other tables.)
I'm using an autonomous transaction from inside my trigger to check mon$call_stack
to see how deeply-nested my current statement is (active statement of current
transaction). I can see my own trigger, and I can see other custom triggers if I'm
nested in those, but it seems I can't see implied triggers that are part of FK-
cascade rules. Not even if I remove the restriction on mon$object_type = 2 /*
triggers only */ (I had hoped maybe they would show up as a 4, validation,
instead?). Yet if I throw an exception inside that custom trigger, the stack-trace
I get back (visible in flamerobin) DOES show the presence of CHECK_1234 around my
trigger. It's not like the cascade-trigger ended, then caused my trigger to fire -
- it's very much still active during the execution of my trigger.
Am I crazy? Do the implied triggers that handle cascades not show up in
mon$call_stack? Only user-defined triggers and procedures?
(Firebird 2.5.2 stock, x64, on win64.)
-Philip