Hi all,
I am trying to implement the cascade delete by using triggers. I got
stuck at the following point:
- when I delete a master node, I want to delete all the detail nodes
that belong to the master. However, nodes are not under the master, but
in the same level with master. Here is the example:
<bill id="b1" />
<bill id="b2" />
<item id="1" bill="b1" />
<item id="2" bill="b1" />
<item id="3" bill="b2" />
<item id="4" bill="b2" />
I cannot place items under the bill, so I need to delete all the items
that belong to the given bill.
Now, here is the problem:
- if I create a statement-level trigger, it does not have the $OLD and
$NEW variables, so I don't know which item(s) to delete;
- if I create a node-level trigger, it cannot contain UPDATE statement,
or at least I don't know how to do it. Here is the quote from the
Programming Guide:
"It is a mandatory requirement that node-level trigger action ends with
an XQuery query, while this is optional for actions of statement-level
triggers."
What does it mean to "end with"? Can it contain UPDATE statement before
xQuery query?
Here is the code that I would like to have working:
CREATE TRIGGER "CascadeDelete"
AFTER DELETE
ON collection('cascadeexample')/bills/bill
FOR EACH NODE
DO {
UPDATE
DELETE
fn:doc("bills", "cascadeexample")/bills/item[@bill=$OLD/@id];
}
I get the following error:
ERROR SE3210 Trigger action in a node-level trigger must end with an
XQuery query. Details: at (6:3)
Can I put the UPDATE statement and somehow "end the code" with the XQuery?
Best regards,
Milan
------------------------------------------------------------------------------
Slashdot TV.
Video for Nerds. Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Sedna-discussion mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sedna-discussion