diff --git a/callback_create.go b/callback_create.go index 342fb413..8e76e855 100644 --- a/callback_create.go +++ b/callback_create.go @@ -34,17 +34,17 @@ func Create(scope *Scope) { } } - returningField := "" + returningKey := "*" if scope.PrimaryKey() == "" { - returningField = "*" + returningKey = "*" } else { - returningField = scope.PrimaryKey() + returningKey = scope.PrimaryKey() } if len(columns) == 0 { scope.Raw(fmt.Sprintf("INSERT INTO %v DEFAULT VALUES %v", scope.QuotedTableName(), - scope.Dialect().ReturningStr(returningField), + scope.Dialect().ReturningStr(scope.TableName(), returningKey), )) } else { scope.Raw(fmt.Sprintf( @@ -52,7 +52,7 @@ func Create(scope *Scope) { scope.QuotedTableName(), strings.Join(columns, ","), strings.Join(sqls, ","), - scope.Dialect().ReturningStr(returningField), + scope.Dialect().ReturningStr(scope.TableName(), returningKey), )) } diff --git a/common_dialect.go b/common_dialect.go index 9acedf78..11e00876 100644 --- a/common_dialect.go +++ b/common_dialect.go @@ -64,7 +64,7 @@ func (s *commonDialect) PrimaryKeyTag(value reflect.Value, size int) string { } } -func (s *commonDialect) ReturningStr(key string) string { +func (s *commonDialect) ReturningStr(tableName, key string) string { return "" } diff --git a/dialect.go b/dialect.go index 64ffc7f0..42b5c742 100644 --- a/dialect.go +++ b/dialect.go @@ -14,7 +14,7 @@ type Dialect interface { HasTop() bool SqlTag(value reflect.Value, size int) string PrimaryKeyTag(value reflect.Value, size int) string - ReturningStr(key string) string + ReturningStr(tableName, key string) string SelectFromDummyTable() string Quote(key string) string HasTable(scope *Scope, tableName string) bool diff --git a/mssql.go b/mssql.go index 5fe45f0a..9317c1e7 100644 --- a/mssql.go +++ b/mssql.go @@ -64,7 +64,7 @@ func (s *mssql) PrimaryKeyTag(value reflect.Value, size int) string { } } -func (s *mssql) ReturningStr(key string) string { +func (s *mssql) ReturningStr(tableName, key string) string { return "" } diff --git a/mysql.go b/mysql.go index 9f4c525b..0dbc3d1d 100644 --- a/mysql.go +++ b/mysql.go @@ -2,8 +2,8 @@ package gorm import ( "fmt" - "strings" "reflect" + "strings" ) type mysql struct{} @@ -64,7 +64,7 @@ func (s *mysql) PrimaryKeyTag(value reflect.Value, size int) string { } } -func (s *mysql) ReturningStr(key string) string { +func (s *mysql) ReturningStr(tableName, key string) string { return "" } diff --git a/postgres.go b/postgres.go index d279b859..1cc8507d 100644 --- a/postgres.go +++ b/postgres.go @@ -4,8 +4,8 @@ import ( "database/sql" "database/sql/driver" "fmt" - "reflect" "github.com/lib/pq/hstore" + "reflect" ) type postgres struct { @@ -65,8 +65,8 @@ func (s *postgres) PrimaryKeyTag(value reflect.Value, size int) string { } } -func (s *postgres) ReturningStr(key string) string { - return fmt.Sprintf("RETURNING \"%v\"", key) +func (s *postgres) ReturningStr(tableName, key string) string { + return fmt.Sprintf("RETURNING %v.%v", tableName, key) } func (s *postgres) SelectFromDummyTable() string { diff --git a/sqlite3.go b/sqlite3.go index e1e5d2d9..266b4642 100644 --- a/sqlite3.go +++ b/sqlite3.go @@ -56,7 +56,7 @@ func (s *sqlite3) PrimaryKeyTag(value reflect.Value, size int) string { } } -func (s *sqlite3) ReturningStr(key string) string { +func (s *sqlite3) ReturningStr(tableName, key string) string { return "" }