You need to make the updates happen in a separate transaction and then make the
get-collections happen in a separate transaction that has a timestamp later
than the update. One way to do that is by making them each do evals.
SOmething like:
xquery version "1.0-ml";
declare function local:mytest()
{
(
xdmp:eval('xdmp:document-insert("/aa.xml", <foo/>)'),
xdmp:eval('xdmp:document-set-collections( "/aa.xml", ("http://py"))
,
xdmp:document-get-collections("/aa.xml")
,
xdmp:document-add-collections( "/aa.xml", ("http://mytest"))')
,
xdmp:eval('xdmp:document-get-collections("/aa.xml")')
)
};
local:mytest()
-Danny
From: [email protected]
[mailto:[email protected]] On Behalf Of helen chen
Sent: Tuesday, July 06, 2010 2:03 PM
To: General Mark Logic Developer Discussion
Subject: [MarkLogic Dev General] how to do multi-transaction in a function
I want to do an update to a document and then see the update immediately. I did
a test like the following:
I add a collection to a document, then try to get it, within the same
transaction I cannot see the new collection. That means I have to be in the
seperate transaction.
declare function local:mytest()
{
(
xdmp:document-set-collections( "/aa.xml", ("http://py"))
,
xdmp:document-get-collections("/aa.xml")
,
xdmp:document-add-collections( "/aa.xml", ("http://mytest"))
,
xdmp:document-get-collections("/aa.xml")
)
};
local:mytest()
How can I make the last line xdmp:document-get-collections("/aa.xml") as
seperate transaction so I can see the change?
Thanks, Helen
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general