問題タブ [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 - MySQL で最後に更新されたレコードの ID を返すにはどうすればよいですか?
PDO を使用して MySQL に接続しています。データベースに新しいレコードを追加しても、最後に追加されたレコードの ID を知りたい場合は、lastinsertid()
組み込みの PDO を呼び出します。ただし、今回は最後に更新されたレコードを返そうとしています。私の知る限り、PDO::lastInsertIdは最後に更新された ID も返す必要があります。
最後に挿入された行の ID、またはシーケンス オブジェクトからの最後の値を返します
しかし、私の場合、本来あるべきものを返しません。値を返します0
。更新クエリによって更新されたレコードの値を返す
ように構成するにはどうすればよいですか?lastinsertid()
AUTO_INCREMENT
php - pdoトランザクションの使用中に最後に挿入されたIDを見つける方法は?
Web アプリケーションで PDO を使用しています。このアプリケーションの一部で、PDO トランザクションを操作する必要があります。最初のクエリを知りlast inserted id
、それを 2 番目のクエリで使用する必要があります。問題がなければ、このトランザクションをコミットします。私が抱えている問題は、トランザクションがコミット
される前にどうすれば見つけられるかということです。
これは私の必要性のサンプルです: last inserted id
pdo - PDO LastInsertId が何も返さない
何らかの理由で、インサートLastInsertId
から を取得できません。PDO
何も返されません。挿入クエリが実行されていないため、実行内に配置すると-1が返されます。ただし、最後に挿入された ID を取得するために実行した直後には、何も返されません。
私は次の質問と他の多くのスタック交換の質問を見てきました。
ただし、違いは 0 と比較して何も返されないことです。エラーも記録されません。以下のコードを参照してください。
繋がり
最後のIDを挿入/返す
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" を実行して新しいレコードを追加すると、すべて正常に機能します。
他のコントローラーからレコードを保存できません。私はすでにこの問題を解決して大きな頭痛を抱えているので、解決策のヒントをいただければ幸いです!!
よろしくお願いします!
cordova - phonegap androidでsqliteから最後に挿入された行IDを取得する方法
テーブルにデータを挿入するアプリを作成しています。テーブルにデータを挿入した後、その行のIDを取得したいので、それに応じてさらに操作を行うことができます。sqlite のlast_insert_rowid()関数を使用しようとしましたが、うまくいきませんでした。最後に挿入された行 ID を取得するための最良の方法を教えてください。どんなアイデアでも大歓迎です。前もって感謝します。
postgresql - Zend 2 + Postgresql ビュー - getGeneratedValue()
Postgresql でビューを使用していますが、Zend で問題が発生しました。挿入要求の最後に挿入された値を取得できません。
例: user_view があり、挿入すると次のようになります。
Zend でリクエストを実行して getGeneratedValue() を呼び出すと、NULL が返されます...
lastval() を取得するにはどうすればよいですか?
INSERT で RETURNING 句を使用しようとしましたが、成功しませんでした..
ありがとうございます。
php - pdo lastInsertId はゼロ (0) を返します
エラーなしで正常に挿入されたMySQL行のテーブルをチェックすると、すべてのクエリが正常に実行されますが、 lastInsertId()
0 が返されます。なぜ?
私のコード: