問題タブ [lastinsertid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - LAST_INSERT_ID()に引数を与えるのはいつですか?
ここから引用:
上記のユースケースは何ですか(利点は何ですか)?
これまで、パラメータでLAST_INSERT_IDを使用したことはありません...
アップデート
私の質問は、自動インクリメントされた主キーによって箱から出して自動的に利用できるのに、なぜこのような種類のシーケンスをこのようにシミュレートしたいのかということです。
php - MySQL + PHP:複数/複合主キーのlast_idを取得する
複数列の主キーを持つテーブルの最後に挿入されたIDを取得する必要があります。
- これらのテーブルにはAUTOCOUNT列がありません。
- パラメータ化されたクエリを使用しています(任意の順序)
- PHP(5.3)とMySQLiモジュールの使用
- 任意のINSERTSQLクエリ。(任意の形式)
例えば:
結果:$ last_id = $ mysqli-> insert_id?:getInsertedId() ;
この時点で、getPK()という名前の関数があり、次のように返されます。
今必要なのは、getInsertedId()を実装することです。SQLパーサーを使用せずにそれを行う簡単な方法はどれですか?
この質問に対する答えはすでにあると確信していますが、何も見つかりませんでした。
アップデート
私がこの質問をしている理由は、MySQLデータベース(個人用フレームワークの一部)に関連するすべてを制御するクラスがあるためです。クエリ(UPDATE、INSERT、DELETEなど)が渡されるset()というメソッドが1つあります。配列が渡されるinsert()のような他の特定のメソッドがあります。
last_inserted_idを格納する変数があります。その変数は後でいつでも呼び出すことができます。複数の主キーを持つさまざまなシステムに多くのテーブルがあります。insert()メソッドを使用する場合、last_inserted_id値を設定するのに問題はありませんが、一部のシステムでset()メソッドを使用する場合、その値を取得できず、0を返す必要があります。その動作を変更したいと思います。
上記の例で説明を簡略化したいと思います。
更新2
すべてのシステムが自分で制御しているわけではありません。たとえば、システムの1つは、クエリが実行されるように送信されるsoapメソッド(あらゆる種類のクエリ)を呼び出します。それらはset()メソッドによって処理されます。次に、最後のIDを取得する他のsoapメソッドがあります。一貫性を保つために、その値を返したいと思います。
insert - SybaseJDBCは生成されたキーを取得します
Postgresでは、私は書くことができます
挿入中に生成されたすべての値を取得します。Oracle、HSQLDBでは、
生成されたすべての値を取得します。MySQLは少し制限されており、に設定されている列のみを返しますAUTO_INCREMENT
。しかし、Sybase SQL Anywhereでこれをどのように行うことができますか?JDBCドライバーはこれらのメソッドを実装しておらずINSERT .. RETURNING
、Postgresのように句はありません。多分走る以外にそれをする方法はありますか
挿入直後?
c# - SQLite get last row ID after connection is closed
I have two functions.
One Insert into database. It opens the connection and closes it after insert. Other is GetLastID function.
I know I could query the biggest ID but I was told it's a bad practice.
"SELECT sqlite_last_insert_rowid();" seems no use since I'm closing the connection after Insert.
mongodb - mongoDB で最後の 50 個のドキュメントを取得するにはどうすればよいですか?
mongoDB で最後の 50 個のドキュメントを取得するにはどうすればよいですか?
私はによって作られたコレクションを持っています
この「コレクション」から
最初の 50 個のドキュメントを取得する代わりに、最後の 50 個のドキュメントを取得したいと考えています。
を使用して最初の 50 個のドキュメントを取得できることを知っています
しかし、どうすれば最新の 50 個のドキュメントを取得できますか?
これは MongoDB API で簡単に実行できますか、それともプログラミングで実装する必要がありますか?
python - タプルの要素をデータベースに挿入する
要素を保存したいタプルがあります。次のように挿入しようとしていますが、次のエラーが表示されます。何が間違っていますか? records_to_be_inserted は、8 つの要素を持つタプルです。
トレースバック (最新の呼び出しが最後): ファイル "/home/tayfun/workspace/personal_guide/modules/mainwindow.py"、57 行目、save_records の写真、住所、メモ、日付) VALUES(?, ?, ?, ?, ? , ?, ?, ?)", self.records_to_be_inserTed) sqlite3.ProgrammingError: 指定されたバインドの数が正しくありません。現在のステートメントでは 8 が使用されていますが、0 が指定されています。
mysql - 「before」トリガーによる挿入後のMySQL PDO LastInsertIDが間違った値を返す
ID (auto_inc)、名前、および customer_code フィールドを持つ顧客テーブルがあります。このテーブルには、別のテーブルから 1 つの顧客コードを選択し、このテーブルに新しいレコードを挿入する前に customer_code フィールドを設定する「before」トリガーもあります。完璧に動作します。
問題は、 lastInsertID() を取得すると、常に 1 が返されることです!
PDO と PHP を使用しています。
助けてくれてありがとう!
php - mysql_last_id()を使用した競合状態
私はこれに対する答えを見つけるために一日の大部分を費やしましたが、そこには1つがないようです。テーブルに行を作成し、挿入された行から自動インクリメントを取得し、その値を使用して2番目のテーブルに別の行を挿入する関数が必要です。次のphpに機能的に似ているもの:
私が遭遇している問題は、私のアプリケーションでは、単一のMySQL接続がすべてのクラス間で共有されているため、別のクラスが1行目と2行目の実行の間に行を挿入する競合状態が発生する可能性があることです。上記の。
私が思いつくことができる最も簡単な解決策はmysql_insert_id()
、新しい独自の接続を使用する関数を使用することですが、それは膨大な量の不要なオーバーヘッドのようです。私が試した他の答えには、一意の値(おそらくで作成されたUUID()
)を挿入し、自動インクリメント値の代わりにそれを使用するか、最初の挿入と呼び出しをLAST_INSERT_ID()
ストアド関数に入れることが含まれます(確かではありませんが)それが可能な競合状態を解決するかどうか)。
mysql_insert_id()
また、トランザクションが役立つかどうかを確認するためにトランザクションを調べてきましたが、トランザクションとの正確な相互作用に関するドキュメントはほとんどありません。私が知る限りINSERT
、トランザクションのロックのいずれとも競合しなかった別のものは実行でき、同じ競合状態を引き起こす可能性があるため、おそらくここでは役に立ちません。
それで、私が上記のいずれかに誤りがないと仮定して(そして私が誤りである場合は私を訂正してください)、2番目INSERT
が適切な値を使用することを100%保証するための最良の方法は何ですか?
orm - Kohana3ORMは最後の挿入IDを取得します
-> save()呼び出しの後に、最後の挿入IDを取得する方法はありますか?
サンプルコード:
php - SQLiteで最後の挿入IDを取得するにはどうすればよいですか?
最後に挿入された行IDをフェッチするためにSQLiteで使用できる組み込み関数はありますか?たとえば:-mysqlにはLAST_INSERT_ID()
この種の関数があります。sqlliteの場合、同じプロセスを実行するために使用できるすべての関数。
私を助けてください。
ありがとう