問題タブ [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.

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

mysql - MySQL で最後に更新されたレコードの ID を返すにはどうすればよいですか?

PDO を使用して MySQL に接続しています。データベースに新しいレコードを追加しても、最後に追加されたレコードの ID を知りたい場合は、lastinsertid()組み込みの PDO を呼び出します。ただし、今回は最後に更新されたレコードを返そうとしています。私の知る限り、PDO::lastInsertIdは最後に更新された ID も返す必要があります。

最後に挿入された行の ID、またはシーケンス オブジェクトからの最後の値を返します

しかし、私の場合、本来あるべきものを返しません。値を返します0。更新クエリによって更新されたレコードの値を返す
ように構成するにはどうすればよいですか?lastinsertid()AUTO_INCREMENT

0 投票する
0 に答える
421 参照

php - pdoトランザクションの使用中に最後に挿入されたIDを見つける方法は?

Web アプリケーションで PDO を使用しています。このアプリケーションの一部で、PDO トランザクションを操作する必要があります。最初のクエリを知りlast inserted id、それを 2 番目のクエリで使用する必要があります。問題がなければ、このトランザクションをコミットします。私が抱えている問題は、トランザクションがコミット
される前にどうすれば見つけられるかということです。 これは私の必要性のサンプルです: last inserted id

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

pdo - PDO LastInsertId が何も返さない

何らかの理由で、インサートLastInsertIdから を取得できません。PDO何も返されません。挿入クエリが実行されていないため、実行内に配置すると-1が返されます。ただし、最後に挿入された ID を取得するために実行した直後には、何も返されません。

私は次の質問と他の多くのスタック交換の質問を見てきました。

  1. Postgresql で lastInsertId が機能しない
  2. PDO lastInsertId() は 0 を返します
  3. PDO lastInsertId の問題、php

ただし、違いは 0 と比較して何も返されないことです。エラーも記録されません。以下のコードを参照してください。

繋がり

最後のIDを挿入/返す

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

mysql - CakePHP 1.3 はデータベースに保存されませんが、SQL ステートメントは正しく、insertID は正しく増加します

本当に奇妙な問題についてはすでに多くのフォーラムを検索しましたが、保存プロセス中に何が問題になっているのかまだわかりません...データベースで。

環境

Cake-1.3.13 アプリをしばらく実行していて、別のデータベース テーブルを追加する必要がありました。これはもちろん他のテー​​ブルに関連しています。私の問題は、habtm-relation テーブルのレコードを保存することです。これは次のようになります。

基本的な検証基準のみを使用して単純なモデルを足場にしました。

Rejectreasons と EmployeesProjects のレコードをいくつか作成したので、データベースには有効なエントリがいくつかあります。ここで、指定された employees_projects_rejectreasons テーブルに新しいレコードを作成して、それらをリンクしたいと考えています。別のコントローラー (EmployeesProjectsController) からこれを実行しようとしました。データを保存するための私の最新の試みは次のとおりです。

さてどうなるか

レコードを保存しようとすると、デバッグで次の成功レポートが表示されます。

したがって、save() 呼び出しは true を返し、mySQL の auto_increment 関数によって新しい ID が作成されました。ここまでは順調ですね。しかし、データベースを確認すると、レコードが作成されていませんでした。しかし、auto_increment_counter は、あたかもレコードが保存されたかのように 1 増加しましたが、そうではありませんでした。

デバッグ レベル 2 でアプリを実行すると、cake から生成された SQL ステートメントを確認できます。

このステートメントを SQL サーバーで直接実行すると、レコードは正しく挿入されません。

私がすでに試したこと

保存手順ですでにさまざまなアプローチを試しました。データ配列の代わりにセッターを使用してみました:

も同様ですが、違いはありませんでした。EmployeesProjectsRejectreason-Modelにカスタムの save-method を記述した後、コントローラーから呼び出しましたが、常に同じ結果が得られました。

私は試した

  • モデルキャッシュの削除
  • サーバーインスタンスとサーバー自体の再起動
  • テーブルの削除と再作成
  • モデルの検証を無効にする
  • 一意の外部キー インデックスの削除
  • ハードコーディングされた既存の ID を外部キーとして保存する

いくつかのより奇妙な動作

コントローラ コードにハードコードされた ID を使用した最後のテストでは、さらなる謎に直面しました。既存のforeign_key-ID を保存しようとすると、データが以前のように保存されません。しかし、両方の ID がハードコードされていて、存在しない場合 (データベースには明らかに存在しない発明された ID 345 と 567 を使用しました)、最終的にレコードが挿入されました!

さらに、新しいテーブルのモデル、ビュー、およびコントローラーを足場にしました。スキャフォールディング ビュー "myApp/employees_projects_rejectreasons/add" を実行して新しいレコードを追加すると、すべて正常に機能します。

他のコントローラーからレコードを保存できません。私はすでにこの問題を解決して大きな頭痛を抱えているので、解決策のヒントをいただければ幸いです!!

よろしくお願いします!

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

cordova - phonegap androidでsqliteから最後に挿入された行IDを取得する方法

テーブルにデータを挿入するアプリを作成しています。テーブルにデータを挿入した後、その行のIDを取得したいので、それに応じてさらに操作を行うことができます。sqlite のlast_insert_rowid()関数を使用しようとしましたが、うまくいきませんでした。最後に挿入された行 ID を取得するための最良の方法を教えてください。どんなアイデアでも大歓迎です。前もって感謝します。

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

postgresql - Zend 2 + Postgresql ビュー - getGeneratedValue()

Postgresql でビューを使用していますが、Zend で問題が発生しました。挿入要求の最後に挿入された値を取得できません。

例: user_view があり、挿入すると次のようになります。

Zend でリクエストを実行して getGeneratedValue() を呼び出すと、NULL が返されます...

lastval() を取得するにはどうすればよいですか?

INSERT で RETURNING 句を使用しようとしましたが、成功しませんでした..

ありがとうございます。

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

php - pdo lastInsertId はゼロ (0) を返します

エラーなしで正常に挿入されたMySQL行のテーブルをチェックすると、すべてのクエリが正常に実行されますが、 lastInsertId() 0 が返されます。なぜ?

私のコード: