Open xiaoxfan opened 6 years ago
anybody help! thank you.
sometimes I need to get the first sql's returning id as the other table's fk. So I can't use tx.NamedExec() function(which is work correctly).
Same problem, but with 'C', not 'D'.
@94Carousel I have figured it out. You just need to rows.Close() before executing next queries.
type Test struct { Id int
json:"id" db:"id" form:"id"Name string
json:"name" db:"name" form:"name"Role pq.Int64Array
json:"role" db:"role" form:"role"} func main() { db, err := sqlx.Connect("postgres", "user=postgres password=***** dbname=*** sslmode=disable") if err != nil { log.Panicln(err) } defer db.Close() tx, err := db.Beginx() test := Test{Name: "name", Role: []int64{1, 2, 3}} _, err1 := tx.NamedQuery(
INSERT INTO test(name,role) VALUES (:name,:role)returning id;, test) fmt.Println(err1) _, err1 = tx.NamedQuery(
INSERT INTO test(name,role) VALUES (:name,:role)returning id;, test) fmt.Println(err1) _, err1 = tx.NamedQuery(
INSERT INTO test(name,role) VALUES (:name,:role)returning id;, test) fmt.Println(err1) _, err1 = tx.NamedQuery(
INSERT INTO test(name,role) VALUES (:name,:role)returning id;, test) fmt.Println(err1) _, err1 = tx.NamedQuery(
INSERT INTO test(name,role) VALUES (:name,:role)returning id;, test) fmt.Println(err1) tx.Commit() }
the first err1 is nil ,but the others don't, here are output: