現在MariaDBデータベースと通信するGolangアプリケーションで作業しています。私のサービスは*User
になり、一致するレコードを更新しようとします。例えば提供された値が空でない場合にMariaDBカラムを更新する文字列
:
func (d *database) UpdateUser(user *User) error {
stmt, err := d.Prepare(`UPDATE Users
SET FirstName=?, LastName=?, Email=?, Address1=?, Address2=?,
City=?, State=?, Country=?, PostalCode=?
WHERE Id=?`)
if err != nil {
return err
}
_, err := res, err := stmt.Exec(user.FirstName, user.LastName, user.Email,
user.Address1, user.Address2, user.City, user.State, user.Country,
user.PostalCode, user.Id)
return err
}
しかし、私が供給されていないフィールドを更新する必要はありません。私はSQLがCASE
ステートメントを使用して更新することができますが、私は見ていないことを見てきた
`UPDATE Users
SET FirstName=? OR FirstName, LastName=? OR LastName, Email=? OR Email,
Address1=? OR Address1, Address2=? OR Address2, City=? OR City,
State=? OR State, Country=? OR Country, PostalCode=? OR PostalCode
WHERE Id=?`
:私は、提供される一つの空の文字列であれば、それは値を更新しないと、これに近い何か、を探しています同じ変数をExec()
に何度も提供せずにこれを使用する方法です。このよう
"が供給されていない" ん空の文字列としてでてくる、または 'NULL'として一度だけ、各パラメータを渡すには? –