去批量插入返回ID不起作用

I want to batch insert some rows and get their ids with golang, this is my attempt in doing so

import (
    "database/sql"
    "fmt"
    _ "github.com/bmizerany/pq"
    "log"
)
func main() {
conn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s sslmode=require", host, user, password, dbname)
d, err := sql.Open("postgres", conn)
rows, err := d.Query("INSERT INTO MYTABLE(MYCOLUMN) VALUES(1),(2),(3) RETURNING ID")
defer rows.Close()
var ids []int
for rows.Next() {
    var id int
    scan_err := rows.Scan(&id)
    fmt.Println(scan_err)
    if scan_err != nil {
        log.Fatal(scan_err)
    }
    ids = append(ids, id)
    fmt.Printf("id %d
", id)
}
}

my problem is ids is always empty even if the values are inserted correctly in the database.

what's interesting is that the following works

var id int
db.QueryRow("INSERT INTO MYTABLE(MYCOLUMN) VALUES(1) RETURNING ID").Scan(&id)

How do solve this?