@craig.emmerich
В Go с использованием MySQL можно получить значение только что вставленной строки, используя функцию LastInsertId() из пакета database/sql. Вот пример кода:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/database")
if err != nil {
panic(err.Error())
}
defer db.Close()
// Вставка строки в таблицу
res, err := db.Exec("INSERT INTO my_table (column1, column2) VALUES (?, ?)", "value1", "value2")
if err != nil {
panic(err.Error())
}
// Получение ID только что вставленной строки
id, err := res.LastInsertId()
if err != nil {
panic(err.Error())
}
fmt.Println("ID новой строки:", id)
}
|
В случае с PostgreSQL, вы можете использовать функцию RETURNING в вашем SQL-запросе для получения только что вставленного значения. Есть несколько способов это сделать, вот один из них:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
)
func main() {
db, err := sql.Open("postgres", "postgres://user:password@localhost/database?sslmode=disable")
if err != nil {
panic(err.Error())
}
defer db.Close()
// Вставка строки в таблицу
var id int
err = db.QueryRow("INSERT INTO my_table (column1, column2) VALUES ($1, $2) RETURNING id", "value1", "value2").Scan(&id)
if err != nil {
panic(err.Error())
}
fmt.Println("ID новой строки:", id)
}
|
В обоих примерах предполагается, что вы уже установили соответствующие драйверы MySQL (github.com/go-sql-driver/mysql) или PostgreSQL (github.com/lib/pq).