code: func (c *Connection) Update(model interface{}, excludeColumns ...string) error {
  	sm := &Model{Value: model}
  	return sm.iterate(func(m *Model) error {
  		return c.timeFunc("Update", func() error {
  			var err error
  
  			if err = m.beforeSave(c); err != nil {
  				return err
  			}
  			if err = m.beforeUpdate(c); err != nil {
  				return err
  			}
  
  			tn := m.TableName()
  			cols := columns.ForStructWithAlias(model, tn, m.As)
  			cols.Remove("id", "created_at")
  
  			if tn == sm.TableName() {
  				cols.Remove(excludeColumns...)
  			}
  
  			m.touchUpdatedAt()
  
  			if err = c.Dialect.Update(c.Store, m, cols); err != nil {
  				return err
  			}
  			if err = m.afterUpdate(c); err != nil {
  				return err
  			}
  
  			return m.afterSave(c)
  		})
  	})
  }
docs: // Update writes changes from an entry to the database, excluding the given columns.
  // It updates the `updated_at` column automatically.