Методы выполнения операции вставки SQLx и возврата идентификатора в Rust

Вот несколько способов добиться этого с помощью SQLx:

  1. Метод 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. Метод 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. Метод 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 для взаимодействия с базами данных.