code: func (tx *tx) update(table string, o api.StoreObject) error {
  	oldN := tx.lookup(table, indexID, o.GetID())
  	if oldN == nil {
  		return ErrNotExist
  	}
  
  	meta := o.GetMeta()
  
  	if tx.curVersion != nil {
  		if oldN.GetMeta().Version != meta.Version {
  			return ErrSequenceConflict
  		}
  	}
  
  	copy := o.CopyStoreObject()
  	if err := touchMeta(&meta, tx.curVersion); err != nil {
  		return err
  	}
  	copy.SetMeta(meta)
  
  	err := tx.memDBTx.Insert(table, copy)
  	if err == nil {
  		tx.changelist = append(tx.changelist, copy.EventUpdate(oldN))
  		o.SetMeta(meta)
  	}
  	return err
  }
docs: // Update updates an existing object in the store.
  // Returns ErrNotExist if the object doesn't exist.