Как узнать id только что вставленной строки на golang+mysql либо golang+postgresql?

Пользователь

от aaliyah.greenfelder , в категории: Общие вопросы , 5 месяцев назад

Как узнать id только что вставленной строки на golang+mysql либо golang+postgresql?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

1 ответ

Пользователь

от marjorie.goldner , 5 месяцев назад

@aaliyah.greenfelder 

В случае MySQL, Вы можете использовать функцию LastInsertId из структуры sql.Result, чтобы получить id только что вставленной строки. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Предположим, у вас есть открытое соединение с базой данных MySQL с именем "db"

// Создаем подготовленное выражение для вставки новой строки
stmt, err := db.Prepare("INSERT INTO my_table (column1, column2) VALUES (?, ?)")
if err != nil {
    log.Fatal(err)
}
defer stmt.Close()

// Выполняем запрос на вставку значения и получаем результат
result, err := stmt.Exec("value1", "value2")
if err != nil {
    log.Fatal(err)
}

// Получаем id только что вставленной строки
id, err := result.LastInsertId()
if err != nil {
    log.Fatal(err)
}

fmt.Println("ID только что вставленной строки:", id)


В случае PostgreSQL, Вы можете использовать функцию Returning в Вашем SQL-запросе для возврата id только что вставленной строки. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
// Предположим, у вас есть открытое соединение с базой данных PostgreSQL с именем "db"

// Создаем подготовленное выражение для вставки новой строки
stmt, err := db.Prepare("INSERT INTO my_table (column1, column2) VALUES ($1, $2) RETURNING id")
if err != nil {
    log.Fatal(err)
}
defer stmt.Close()

// Выполняем запрос на вставку значения и получаем значение id только что вставленной строки
var id int
err = stmt.QueryRow("value1", "value2").Scan(&id)
if err != nil {
    log.Fatal(err)
}

fmt.Println("ID только что вставленной строки:", id)


Убедитесь, что Вы используете правильные имена таблицы, столбцов и значения в своих SQL-запросах.