Hi Genneva, In XQuery Update, it does not matter in which order you supply update commands (see [1]). The delete can be omitted, as existing binary resources will be replaced (so in a way STORE is more similar to REPLACE).
Cheers, Christian [1] http://docs.basex.org/wiki/XQuery_Update#Pending_Update_List On Fri, May 27, 2016 at 2:05 AM, Wang, Genneva <genneva.w...@sap.com> wrote: > Hi Basex Guru’s > > Thanks! So I’ve been trying few things. I think the bath insert works, for > both db:add and db:store. So right now I’m trying the delete and store > together. > > I have: > > db:delete('dbTestRepo', 'testdir/someresource.xml'), > db:store('dbTestRepo', 'testdir/someresource.xml', > file:read-binary('/Users/i843335/work/extensibility/dbtest/buyer2.json’)) > > It am assuming that in this case, it should do delete first (if the path > exist), and then do the store to the same path. However, I find that > regardless of whether the existing resource exist for the same resource, > both are not being committed. > > It does seem that the results have 2 updated item, but nothing gets > persisted when I do db:list(‘dbTestRepo’). > > Is there something that I have missed ? Thanks. > > Regards, > -Genneva > > From: <basex-talk-boun...@mailman.uni-konstanz.de> on behalf of Dirk Kirsten > <d...@basex.org> > Date: Thursday, May 19, 2016 at 11:59 PM > To: "basex-talk@mailman.uni-konstanz.de" > <basex-talk@mailman.uni-konstanz.de> > Subject: Re: [basex-talk] multiple inserts/update/deletes in single > transaction > > Hello Genneva, > > this is expected behaviour. BaseX script executed each command separately. > This is by design and required by the nature of XQuery (Update), which by > design always executes as one transaction - Which can be difficult do deal > with if you have a large amount of data and have to e.g. hold it in memory. > > Each XQuery runs in one single transaction, so you can simply add your > documents via XQuery, e.g. > > db:add("DB", "embedded7.xml"), > db:add("DB", "embedded8.xml") > > Cheers > > Dirk > > > On 05/19/2016 08:11 PM, Wang, Genneva wrote: > > Hi > > I’m trying to figure out whether batched transaction would work for basex, > and I came across the RUN and EXECUTE command specified in > http://files.basex.org/releases/8.4/BaseX84.pdf page 58-59. The document > mentioned following in the summary section: > > RUN:Evaluates the contents of file as XQuery expression. If the file ends > with the suffix .bxs, the file content will be evaluated as command script. > This command can be used to run several commands in a single transaction > EXECUTE: Evaluates the specified input as command script. This command can > be used to run several commands in a single transaction. > > I’ve tried this myself > For example, I’d like to know if I batch 2 inserts, if one fails, would both > inserts get rollback. > > I’m using a simple .bxs (attached and also listed below for your > convenience) and run the execute using GUI. > > OPEN test > ADD TO embedded7.xml <root>embedded</root> > ADD TO embedded8.xml <root>embedded > CLOSE > > The second ADD (embedded8.xml) is not a valid xml format so I’m expecting > it to fail, and rollback both files if any of them have already added. But > after executing this script, I’m seeing embedded7.xml have been added. > > Would you be able to confirm if this is the expected behavior ? If so, is > there anyway that I can batch multiple inserts and ensures that these batch > of files can be committed at the same time, and rollback all together if > any of the file has an error ? > > Thank you very much for your help. > > > -- > Dirk Kirsten, BaseX GmbH, http://basexgmbh.de > |-- Firmensitz: Blarerstrasse 56, 78462 Konstanz > |-- Registergericht Freiburg, HRB: 708285, Geschäftsführer: > | Dr. Christian Grün, Dr. Alexander Holupirek, Michael Seiferle > `-- Phone: 0049 7531 91 68 276, Fax: 0049 7531 20 05 22