代码拉取完成,页面将自动刷新
package orm
import (
"errors"
"gitee.com/mosache/YFrame/orm/internal/errs"
)
type Dialect interface {
// 表名,列名标记符号 mysql `
Quoter() string
BuildOnDuplicateKey(b *builder, odk *OnDuplicateKey) error
}
type StandSQL struct{}
func (s StandSQL) Quoter() string {
return "`"
}
func (s StandSQL) BuildOnDuplicateKey(b *builder, odk *OnDuplicateKey) error {
b.sb.WriteString(" ON DUPLICATE KEY UPDATE ")
for idx, e := range odk.assigns {
if idx != 0 {
b.sb.WriteString(",")
}
switch c := e.(type) {
case Assignment:
b.sb.WriteString("`")
fd, ok := b.m.FieldMap[c.Column]
if !ok {
return errs.NewErrUnknownField(c.Column)
}
b.sb.WriteString(fd.ColumnName)
b.sb.WriteString("` ")
b.sb.WriteString("= ")
b.sb.WriteString("?")
b.args = append(b.args, c.Val)
case Column:
fd, ok := b.m.FieldMap[c.Name]
if !ok {
return errs.NewErrUnknownField(c.Name)
}
b.Quoter(fd.ColumnName)
b.sb.WriteString("=")
b.sb.WriteString("VALUES(")
b.Quoter(fd.ColumnName)
b.sb.WriteString(")")
default:
return errors.New("unsupported assign type")
}
}
return nil
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。