This commit is contained in:
Lunny Xiao 2019-10-10 11:34:27 +00:00 committed by GitHub
commit 7107fb582f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 42 additions and 1 deletions

View File

@ -377,9 +377,19 @@ func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int6
return 0, errors.New("No content found to be updated") return 0, errors.New("No content found to be updated")
} }
var tableAlias = session.engine.Quote(tableName)
if session.statement.TableAlias != "" {
switch session.engine.dialect.DBType() {
case core.MSSQL:
tableAlias = fmt.Sprintf("%s %s", tableAlias, session.statement.TableAlias)
default:
tableAlias = fmt.Sprintf("%s AS %s", tableAlias, session.statement.TableAlias)
}
}
sqlStr = fmt.Sprintf("UPDATE %v%v SET %v %v", sqlStr = fmt.Sprintf("UPDATE %v%v SET %v %v",
top, top,
session.engine.Quote(tableName), tableAlias,
strings.Join(colNames, ", "), strings.Join(colNames, ", "),
condSQL) condSQL)

View File

@ -1421,3 +1421,34 @@ func TestUpdateExprs(t *testing.T) {
assert.EqualValues(t, 2, ue.NumIssues) assert.EqualValues(t, 2, ue.NumIssues)
assert.EqualValues(t, "lunny xiao", ue.Name) assert.EqualValues(t, "lunny xiao", ue.Name)
} }
func TestUpdateAlias(t *testing.T) {
assert.NoError(t, prepareEngine())
type UpdateAlias struct {
Id int64
NumIssues int
Name string
}
assertSync(t, new(UpdateAlias))
_, err := testEngine.Insert(&UpdateAlias{
NumIssues: 1,
Name: "lunny",
})
assert.NoError(t, err)
_, err = testEngine.Alias("ua").Where("ua.id = ?", 1).Update(&UpdateAlias{
NumIssues: 2,
Name: "lunny xiao",
})
assert.NoError(t, err)
var ue UpdateAlias
has, err := testEngine.Get(&ue)
assert.NoError(t, err)
assert.True(t, has)
assert.EqualValues(t, 2, ue.NumIssues)
assert.EqualValues(t, "lunny xiao", ue.Name)
}