Golang Merge PostgreSQL MySQL

API

To see the full list of supported methods, see MergeQueryopen in new window.

db.NewMerge(). Model(&strct). Model(&slice). Table("table1", "table2"). // quotes table names TableExpr("table1 AS t1"). // arbitrary unsafe expression TableExpr("(?) AS alias", subquery). ModelTableExpr("table1 AS t1"). // overrides model table name On(expr string, args ...any). When(expr string, args ...any). WhenInsert(expr string, func(q *bun.InsertQuery) *bun.InsertQuery). WhenUpdate(expr string, func(q *bun.UpdateQuery) *bun.UpdateQuery). WhenDelete(expr string). 

Example

To create a MERGE query for MSSQL RDMBS:

type Model struct {	ID int64 `bun:",pk,autoincrement"`	Name string	Value string } newModels := []*Model{ {Name: "A", Value: "world"}, {Name: "B", Value: "test"}, } return db.NewMerge(). Model(new(Model)). With("_data", db.NewValues(&newModels)). Using("_data"). On("?TableAlias.name = _data.name"). WhenUpdate("MATCHED", func(q *bun.UpdateQuery) *bun.UpdateQuery { return q.Set("value = _data.value") }). WhenInsert("NOT MATCHED", func(q *bun.InsertQuery) *bun.InsertQuery { return q.Value("name", "_data.name").Value("value", "_data.value") }). Returning("$action")