Вот несколько способов добиться этого с помощью SQLx:
-
Метод 1: использование функции
query
let query = sqlx::query("INSERT INTO your_table (column1, column2) VALUES ($1, $2) RETURNING id") .bind(value1) .bind(value2) .fetch_one(&pool) .await?; let id: i32 = query.id;
-
Метод 2: использование функций
execute
иfetch
let query = sqlx::query("INSERT INTO your_table (column1, column2) VALUES ($1, $2) RETURNING id") .bind(value1) .bind(value2) .execute(&pool) .await?; let id: i32 = sqlx::query_scalar("SELECT id FROM your_table WHERE id = lastval()").fetch_one(&pool).await?;
-
Метод 3. Использование транзакции
let mut transaction = pool.begin().await?; let query = sqlx::query("INSERT INTO your_table (column1, column2) VALUES ($1, $2) RETURNING id") .bind(value1) .bind(value2) .fetch_one(&mut transaction) .await?; let id: i32 = query.id; transaction.commit().await?;
Это всего лишь несколько примеров того, как можно выполнить операцию вставки с помощью SQLx и получить идентификатор вставленной записи. Библиотека SQLx обычно используется вместе с Rust для взаимодействия с базами данных.