問題タブ [last-insert-id]

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.

0 投票する
1 に答える
783 参照

java - Java Last Insert ID が機能しない

重複の可能性:
JDBC で挿入 ID を取得するには?

最後の挿入 ID を取得しようとしていましたが、どうやら機能していないようです。一連のエラーが表示され続けます。そのうちの 1 つがこれです。

最後に挿入したものを取得しようとしましたが、機能しません。これが私のコードです

そして2つ目は

最後に挿入されたIDを取得するにはどうすればよいですか? 私の方法で何が問題になっていますか?

0 投票する
2 に答える
257 参照

.net - WebMatrix で LAST_INSERT_ID() を使用する方法

LAST_INSERT_ID()WebMatrix で MySQL データベースを使用する方法がわかりません。以下のコード スニペットに適用する方法を教えてもらえますか?

0 投票する
6 に答える
6401 参照

java - mysql から最後のレコードを取得する

私はmysqlを使用していて、いくつかの問題に直面しています。挿入された最後の行を取得したい。

《以下詳細》

以下は、私がテーブルを作成した方法です。

create table maxID (myID varchar(4))

以下のように4つの値を挿入しました

を実行するselect myID, last_insert_id() as NewID from maxIDと、以下のような出力が得られます

以下のコードを試したところ、

select myId, last_insert_id() as NewID, @rowid:=@rowid+1 as myrow from maxID, (SELECT @rowid:=0) as init

以下のように出力されます。

ただし、コードを使用するselect myId, last_insert_id() as NewID, @rowid:=@rowid+1 as myrow from maxID, (SELECT @rowid:=0) as init where @rowid = 4と、エラーが発生しますUknown column 'myrow' in where clause

を使用するwhere @rowid=4と、テーブルにデータがありません。

データで遊ぶためのリンク

注:ここでは、目的の出力を取得するためだけに 4 を使用しています。後でクエリからこれを取得できます(select max(rowid) from maxID)

最後のレコードのみを表示したい場合、何をする必要があるか教えてくださいA003

御時間ありがとうございます。

アップデート:

テーブルには既に数百万のデータがあるため、以下に示すように新しい列を追加できません。

0 投票する
2 に答える
4426 参照

php - PDOのOracleドライバがlastInsertId()を実装しないのはなぜですか?

PDOで次のエラーが発生します。

エラー:メッセージ:PDO :: lastInsertId()[pdo.lastinsertid]:SQLSTATE [IM001]:ドライバーはこの関数をサポートしていません:ドライバーはlastInsertId()をサポートしていません

Oracleデータベースから最後に挿入されたIDを取得しようとしたとき。最後の挿入ID関数にシーケンス文字列を追加しましたが、まだ機能しません。Googleは、PDOを使用したOracleでのこのエラーについてはあまり言及していません。

0 投票する
2 に答える
99 参照

php - MySQLで設定された変数をPHPに戻す方法

MySQLに複数のレコードを挿入するPHP関数があります。

最初のINSERTステートメントのLAST_INSERT_ID(@asset)を次の関数の変数として使用しようとしています。変数を設定することを期待して、上記の関数を呼び出す方法は次のとおりです。

私の問題は、SQLステートメントの「return$asset_ID」のどこかにあると確信しています。LAST_INSERT_ID呼び出しを1つだけ使用すると、これを正常に実行できました。

何も返されていません。

0 投票する
1 に答える
2224 参照

c# - C# mysql one return last_insert_id

mysql の UPDATE、DELETE、または INSERT クエリを実行できるメソッドを作成しようとしています。このメソッドは、INSERT を使用してlast_insert_id(). 以下は私が現時点で持っているコードです:

last_insert_id()これに関する問題は、メソッドを返す挿入クエリを使用すると、非常にうまく機能することです。しかし、クエリが返さない場合last_insert_id()、メソッドは誤動作します。このメソッドを機能させるにはどうすればよいですか?

0 投票する
1 に答える
1256 参照

sql - sqliteのlast_insert_rowid-2つのテーブル

私は2つのテーブルを手に入れましたが、そのうちの1つはもう1つのヘルパーです。テーブル「reviews」には、テーブル「films」内のそのレビューのフィルムのIDを参照する整数である列があります。テーブル「films」に新しいフィルムを挿入した後、テーブル「reviews」のlast_insert_rowidを使用する方法はありますか?

私はSQLITEを使用しています。max(id)での使用を見てきましたが、信頼性が低い可能性があります。助けていただければ幸いです。

0 投票する
2 に答える
28102 参照

mysql - Mysql を使用して、リンクされたテーブルで複数の INSERT を実行する

2 つのテーブルがあり、一方は他方の主キーにリンクされています。現時点では、テーブル A に INSERT し、LAST_INSERT_ID を取得してから、テーブル B に INSERT します。

しかし、何百ものレコードを挿入する必要があり、スピードアップしたいと考えています。

Mysql では、次のいずれかを実行できます。

など、または

INSERT INTO table_a (v1, v2, v3) VALUE (0, 1, 2), (4, 5, 6), etc複数のエントリをより速く追加するには - ただし、1 つのテーブルに対してのみです。

もちろん、後者の方がはるかに高速です。ストアド プロシージャを使用して 2 つのリンクされたテーブルを使用して、私の例でこの動作を再現できるかどうか、また同様にパフォーマンスが大幅に向上するかどうか疑問に思っていました。

次のようなもの: call special_insert((0, 1, 2), (4, 5, 6), etc); または類似。

私はストアド プロシージャの経験がないので、どの方向に進むべきかについてアイデアを探しています。

0 投票する
3 に答える
5807 参照

mysql - LAST_INSERT_ID()は常に0を返します(RMySQL)-個別の接続の問題

いくつかの投稿で見つかった元の例

この投稿によると、次のSQLステートメントは最終的に私にベクトルを与えるはずです 1, 2, 2, 2, 2

NBJeff AllenQuassnoiによる提案に従って

この例を、元のユースケースよりも少し実際のユースケースに似せるように調整しました。

まあ、そうではありません、本当に;-)

私は少しググってみましたが、AFAIULAST_INSERT_ID()は、正しく機能するためには同じ接続を使用する必要があるという意味で「接続認識」です。ただし、接続オブジェクトを割り当てることで、上記の各ステートメントでcon実際に同じ接続が使用されていることを確認していると思いました。

まあ、明らかにそうではありません;-)誰かがいくつかの説明や回避策で私を助けることができますか?ただし、DBに同時に書き込む複数のスレッドを実行しているため、のようなものを使用してselect max(<ID>) from <TABLE>も、それを削減することはできません。そのため、そのようにするとIDの取得が台無しになります。

ありがとう!

2012年4月20日現在の調査結果

  • Quassnoiのおかげで、問題をもう少し追跡することができました。RMySQL関数は明示的な引数をそれほど気にしないようconnですが、DBに接続するたびにバックグラウンドで新しい接続を開きます。おそらくこれにもいくつかの正当な理由があります。それでも、これを回避する方法を知っている人はいますか?
  • Jeffrey Horner(RMySQLパッケージのメンテナー)に連絡しました。これはWindowsの問題のようです。Linuxで彼のために働いた:-/

接続の詳細

ジェフが提案したように