1つのINSERTで複数の行の挿入IDを取得するにはどうすればよいですか?

ゴロローデン

1つのINSERTステートメントを使用して、テーブルに複数の行を挿入したいと思います。SQLには、単一のINSERTステートメントのパラメーターとして複数の行を提供するオプションがあるため、これは問題ありません現在、これらの行にはID自動的にインクリメントされるフィールドが含まれています。つまり、その値は私のコードではなくデータベースによって設定されます。

その結果、ID挿入された行の値を取得したいと思います。私の基本的な質問は、MariaDB / MySQLに対してどのように行うのですか?

結局のところ、これは非常に単純です。たとえばPostgreSQLの場合、PostgreSQLには、1つまたは複数の行に必要な値を返すRETURNING句がINSERTあるためです。これはまさに私が望んでいることであり、機能します。

残念ながら、MariaDBもMySQLにもPostgreSQLのRETURNING句がないため、のようなものにフォールバックする必要がありLAST_INSERT_ID()ますが、これIDは、単一のを使用して複数の行が挿入された場合でも、最後に挿入された単一の行のを返すだけINSERTです。すべてのIDを取得するにはどうすればよいですか?

私のコードは現在次のようになっています:

INSERT INTO mytable
  (foo, bar)
VALUES
  ('fooA', 'barA'),
  ('fooB', 'barB');

SELECT LAST_INSERT_ID() AS id;

同時書き込みでも機能する方法でこの問題を解決するにはどうすればよいですか?

(いいえ、UUIDフィールドなどに変更するオプションはありません。自動インクリメントフィールドが指定されており、変更できません。)

ビルカーウィン

MySQLとMariaDBにはLAST_INSERT_ID()関数があり、現在のセッションで最新のINSERTステートメントによって生成されたIDを返します。

ただし、INSERTステートメントが複数の行を挿入すると、生成されたセットの最初のIDがLAST_INSERT_ID()返されます。

このような複数の行のバッチでは、後続のIDが連続していることを信頼できます。たとえば、MySQLJDBCドライバーはこれに依存しています。

挿入する行にid列のNULL値とNULL以外の値が混在している場合、この仮定を台無しにするリスクがあります。JDBCドライバーは、生成されたIDのセットに対して誤った値を返します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Railsの1つの列に複数のIDを挿入または保存するにはどうすればよいですか?

分類Dev

複数のレコードの挿入で最後に挿入されたIDを取得するにはどうすればよいですか?

分類Dev

1つのステートメントで複数の行をDB2に挿入するにはどうすればよいですか?

分類Dev

cassandra cqlで1行の挿入に複数の行を挿入するにはどうすればよいですか?

分類Dev

行が異なる1つの列に複数の値を挿入するにはどうすればよいですか?

分類Dev

複数の挿入を行うときに挿入されたNewSequentialId値を取得するにはどうすればよいですか?

分類Dev

ID +1を挿入して最後のIDを取得するにはどうすればよいですか?

分類Dev

特定のpostmetaに複数の行を挿入するにはどうすればよいですか

分類Dev

値の1つとしてサブクエリを使用して複数の行を挿入するにはどうすればよいですか?

分類Dev

Devel :: Declareで複数の行を挿入するにはどうすればよいですか?

分類Dev

Excelで複数の行を切り取って挿入するにはどうすればよいですか?

分類Dev

Orderテーブルに複数の行を挿入するにはどうすればよいですか?

分類Dev

Oracleで複数の行を1つの行に結合するにはどうすればよいですか?

分類Dev

mysqlで複数の行を1つの行に結合するにはどうすればよいですか?

分類Dev

Oracleの複数のテーブルから1つのテーブルにデータを挿入するにはどうすればよいですか?

分類Dev

Oracle-複数の値を持つ1つの挿入を動的に作成するにはどうすればよいですか

分類Dev

複数の挿入があるトランザクションごとに一意のIDを取得するにはどうすればよいですか

分類Dev

1つの値を1つの列に挿入するにはどうすればよいですか?

分類Dev

ANDを使用せずに複数の行からIDを取得するにはどうすればよいですか

分類Dev

1つのtableViewcellから複数のボタンを取得するにはどうすればよいですか?

分類Dev

Pythonで複数の入力を同時に挿入するにはどうすればよいですか?

分類Dev

同じ行から複数の入力を取得するにはどうすればよいですか?

分類Dev

複数の行から入力を取得するにはどうすればよいですか?

分類Dev

postgreSQLで1行に複数の値を取得するにはどうすればよいですか?

分類Dev

複数の行データを2つのテーブルに同時に挿入するにはどうすればよいですか

分類Dev

スラッシュを含む行でsedの特定の行の下に複数の行を挿入するにはどうすればよいですか?

分類Dev

Laravel 5.5で複数の挿入を行うにはどうすればよいですか?

分類Dev

mySQLテーブルの行を複製して1つのカスタム値を挿入するにはどうすればよいですか?

分類Dev

1行から複数の値を入力するにはどうすればよいですか?

Related 関連記事

  1. 1

    Railsの1つの列に複数のIDを挿入または保存するにはどうすればよいですか?

  2. 2

    複数のレコードの挿入で最後に挿入されたIDを取得するにはどうすればよいですか?

  3. 3

    1つのステートメントで複数の行をDB2に挿入するにはどうすればよいですか?

  4. 4

    cassandra cqlで1行の挿入に複数の行を挿入するにはどうすればよいですか?

  5. 5

    行が異なる1つの列に複数の値を挿入するにはどうすればよいですか?

  6. 6

    複数の挿入を行うときに挿入されたNewSequentialId値を取得するにはどうすればよいですか?

  7. 7

    ID +1を挿入して最後のIDを取得するにはどうすればよいですか?

  8. 8

    特定のpostmetaに複数の行を挿入するにはどうすればよいですか

  9. 9

    値の1つとしてサブクエリを使用して複数の行を挿入するにはどうすればよいですか?

  10. 10

    Devel :: Declareで複数の行を挿入するにはどうすればよいですか?

  11. 11

    Excelで複数の行を切り取って挿入するにはどうすればよいですか?

  12. 12

    Orderテーブルに複数の行を挿入するにはどうすればよいですか?

  13. 13

    Oracleで複数の行を1つの行に結合するにはどうすればよいですか?

  14. 14

    mysqlで複数の行を1つの行に結合するにはどうすればよいですか?

  15. 15

    Oracleの複数のテーブルから1つのテーブルにデータを挿入するにはどうすればよいですか?

  16. 16

    Oracle-複数の値を持つ1つの挿入を動的に作成するにはどうすればよいですか

  17. 17

    複数の挿入があるトランザクションごとに一意のIDを取得するにはどうすればよいですか

  18. 18

    1つの値を1つの列に挿入するにはどうすればよいですか?

  19. 19

    ANDを使用せずに複数の行からIDを取得するにはどうすればよいですか

  20. 20

    1つのtableViewcellから複数のボタンを取得するにはどうすればよいですか?

  21. 21

    Pythonで複数の入力を同時に挿入するにはどうすればよいですか?

  22. 22

    同じ行から複数の入力を取得するにはどうすればよいですか?

  23. 23

    複数の行から入力を取得するにはどうすればよいですか?

  24. 24

    postgreSQLで1行に複数の値を取得するにはどうすればよいですか?

  25. 25

    複数の行データを2つのテーブルに同時に挿入するにはどうすればよいですか

  26. 26

    スラッシュを含む行でsedの特定の行の下に複数の行を挿入するにはどうすればよいですか?

  27. 27

    Laravel 5.5で複数の挿入を行うにはどうすればよいですか?

  28. 28

    mySQLテーブルの行を複製して1つのカスタム値を挿入するにはどうすればよいですか?

  29. 29

    1行から複数の値を入力するにはどうすればよいですか?

ホットタグ

アーカイブ