From fc871d266edeb214f826ae489a8b093323d6d24a Mon Sep 17 00:00:00 2001 From: wanliping Date: Fri, 27 Nov 2020 13:09:44 +0000 Subject: [PATCH] =?UTF-8?q?update=20=E6=94=AF=E6=8C=81postgres=20RETURNING?= =?UTF-8?q?=20=E8=AF=AD=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- callbacks/update.go | 5 ++++- clause/returning.go | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/callbacks/update.go b/callbacks/update.go index 930839d7..b69198c2 100644 --- a/callbacks/update.go +++ b/callbacks/update.go @@ -66,7 +66,10 @@ func Update(db *gorm.DB) { } else { return } - db.Statement.Build("UPDATE", "SET", "WHERE", "RETURNING") + db.Statement.Build("UPDATE", "SET", "WHERE") + if db.Dialector.Name() == "postgres" { + db.Statement.Build("RETURNING") + } } if _, ok := db.Statement.Clauses["WHERE"]; !db.AllowGlobalUpdate && !ok { diff --git a/clause/returning.go b/clause/returning.go index 04bc96da..50fe5fcb 100644 --- a/clause/returning.go +++ b/clause/returning.go @@ -11,6 +11,12 @@ func (returning Returning) Name() string { // Build build where clause func (returning Returning) Build(builder Builder) { + for _, column := range returning.Columns { + if column.Name == "*" { + builder.WriteByte('*') + return + } + } for idx, column := range returning.Columns { if idx > 0 { builder.WriteByte(',')