Re: [indexeddb] Calling update on a cursor index with a unique value constraint

On Wed, Jul 6, 2011 at 9:41 PM, Jeremy Orlow <jorlow@chromium.org> wrote:
> On Wed, Jul 6, 2011 at 10:06 AM, Israel Hilerio <israelh@microsoft.com>
>> We believe an error should be thrown because of the violation of the
>> unique value index constraint and the error code should be set to
>> CONSTRAINT_ERR.  What do you think?
>
> IIRC, we decided update should essentially be an alias to delete and then an
> add on the parent object store--probably an atomic one.  So by that logic it
> does seem to me CONSTRAINT_ERR would be the right error.

Hmm.. it's not exactly a delete and a add since if the add produces an
error but the error handler calls .preventDefault, you don't want only
the delete to be executed.

I'd rather say that a .update is the same as a .put.

> Btw, ObjectStore.add()'s exception section doesn't mention CONSTRAINT_ERR
> though it probably should.

IDBObjectStore.add never throws CONSTRAINT_ERR since that's detected
asynchronously, so the spec seems fine here. However
IDBObjectStoreSync.add and IDBObjectStoreSync.put should and does list
it as an exception.

/ Jonas

Received on Thursday, 7 July 2011 20:47:13 UTC