code: def namedb_name_update( cur, opcode, input_opdata, only_if={}, constraints_ignored=[] ):
      
  
      opdata = copy.deepcopy( input_opdata )
      namedb_name_fields_check( opdata )
      mutate_fields = op_get_mutate_fields( opcode )
  
      if opcode not in OPCODE_CREATION_OPS:
          assert 'name' not in mutate_fields, "BUG: 'name' listed as a mutate field for '%s'" % (opcode)
  
      # reduce opdata down to the given fields....
      must_equal = namedb_update_must_equal( opdata, mutate_fields )
      must_equal += ['name','block_number']
  
      for ignored in constraints_ignored:
          if ignored in must_equal:
              # ignore this constraint 
              must_equal.remove( ignored )
  
      try:
          query, values = namedb_update_prepare( cur, ['name', 'block_number'], opdata, "name_records", must_equal=must_equal, only_if=only_if )
      except Exception, e:
          log.exception(e)
          log.error("FATAL: failed to update name '%s'" % opdata['name'])
          os.abort()
  
      namedb_query_execute( cur, query, values )
  
      try:
          assert cur.rowcount == 1, "Updated %s row(s)" % cur.rowcount 
      except Exception, e:
          log.exception(e)
          log.error("FATAL: failed to update name '%s'" % opdata['name'])
          log.error("Query: %s", "".join( ["%s %s" % (frag, "'%s'" % val if type(val) in [str, unicode] else val) for (frag, val) in zip(query.split("?"), values + ("",))] ))
          os.abort()
  
      return True
docs: Update an existing name in the database.
      If non-empty, only update the given fields.
  
      DO NOT CALL THIS METHOD DIRECTLY.