code: func (nDB *NetworkDB) UpdateEntry(tname, nid, key string, value []byte) error {
  	nDB.Lock()
  	if _, err := nDB.getEntry(tname, nid, key); err != nil {
  		nDB.Unlock()
  		return fmt.Errorf("cannot update entry as the entry in table %s with network id %s and key %s does not exist", tname, nid, key)
  	}
  
  	entry := &entry{
  		ltime: nDB.tableClock.Increment(),
  		node:  nDB.config.NodeID,
  		value: value,
  	}
  
  	nDB.createOrUpdateEntry(nid, tname, key, entry)
  	nDB.Unlock()
  
  	if err := nDB.sendTableEvent(TableEventTypeUpdate, nid, tname, key, entry); err != nil {
  		return fmt.Errorf("cannot send table update event: %v", err)
  	}
  
  	return nil
  }
docs: // UpdateEntry updates a table entry in NetworkDB for given (network,
  // table, key) tuple and if the NetworkDB is part of the cluster
  // propagates this event to the cluster. It is an error to update a
  // non-existent entry.