diff --git a/database/sql_helper.go b/database/sql_helper.go
index a61599c262161399bea891146c54be991e2772cd_ZGF0YWJhc2Uvc3FsX2hlbHBlci5nbw==..60392d21e88624ae9413eb644ddfbab0f8978ce6_ZGF0YWJhc2Uvc3FsX2hlbHBlci5nbw== 100644
--- a/database/sql_helper.go
+++ b/database/sql_helper.go
@@ -3,6 +3,7 @@
 import (
 	"context"
 	"database/sql"
+	"strings"
 
 	sq "github.com/Masterminds/squirrel"
 	"github.com/jmoiron/sqlx"
@@ -135,6 +136,19 @@
 	return h.Exec(query)
 }
 
+// InsertReturning inserts instances and select the result
+func (h *SQLHelper) InsertReturning(tgt interface{}, instances ...Mapped) error {
+	if len(instances) == 0 {
+		return nil
+	}
+	query := SQLInsert(instances...).
+		Suffix("RETURNING" + strings.Join(instances[0].Columns(true), ", "))
+	if len(instances) == 1 {
+		return h.Get(tgt, query)
+	}
+	return h.Select(tgt, query)
+}
+
 // InsertNoPKey inserts a Mapped into the db.
 func (h *SQLHelper) InsertNoPKey(instances ...Mapped) (sql.Result, error) {
 	query := SQLInsertNoPKey(instances...)