問題タブ [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 投票する
6 に答える
12436 参照

php - 「PDO::lastInsertId」/「mysql_insert_id」の代替

「lastInsertId」(または PDO を使用していない場合は mysql_insert_id()) を使用するのは悪いことだとよく耳にします。トリガーの場合は、INSERT が作成した最後の ID ではないものを返す可能性があるため、明らかにそうです。

代替手段は何ですか?

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

sql-server-ce - 型付き DataSet および DataGridView を使用した、最後に挿入されたレコード ID の問題

私は単純なデータベースアプリケーションに以下を使用しています:

  • SQL Server Compact Edition .sdf ファイルをデータベースとして、int の主キー ID を使用。
  • データ アクセス レイヤーとして型指定された DataSet および BindingSource
  • データを表示するための DataGridView。

私の問題は、最後に挿入されたレコード/行 ID に問題があることです。ナビゲーター コンポーネントの追加ボタンを使用して datagridview に行を追加すると、新しいレコード/行の ID は -1 になります。TableAdapter.Update() を使用してデータをデータベースに保存した後でも -1 のままです。@@identity または scope_identity() を使用して別のクエリを使用して最後の ID を取得できることはわかっていますが、別のクエリを使用して手動でデータを更新する必要があるとは思えません。ここで何か不足していますか?データベースに保存し、挿入したレコードの ID を取得した後にデータを自動的に更新する方法はありますか?

また、データセット デザイナー -> テーブル アダプター構成 -> 詳細ウィンドウで "データテーブルを更新する" オプションを見ましたが、何らかの理由で無効になっています。でも関係あるのか分からない..

これについて何か助けていただければ幸いです..

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

php - mysql で最後に更新された列を取得する

次のようなMySQLクエリがあります(Zend_Dbを使用):

(Rank は自動インクリメント PK ではありません)。rank別のクエリを実行せずに値を取得したいと思います。試してみまし$handle->lastInsertId();たが、MySQL の自然な自動インクリメント メソッドを使用しなかったため、うまくいかないようです (できません -rankは投稿のランクです。私は ++ または -- それです。)

別のクエリを実行してこれを行う方法はありますか? 最後に変更された値を返す関数?

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

sql - 挿入された最後の行を取得するためのユニバーサルSQLコンストラクト

最後の行(または主キー)を挿入するための正しいユニバーサルSQL構造は何でしょうか。IDはシーケンスによって自動生成される可能性がありますが、シーケンスをまったく処理したくありません。テーブルをクエリしてIDを取得する必要があります。または、INSERTを何らかの方法で拡張してIDを返すこともできます。常に単一の行を挿入していると仮定します。このソリューションは、ほとんどのRDBMSで機能するはずです。

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

java - 2 つの SQL 挿入によるトランザクション

実行する 2 つの SQL 挿入があります (たとえば、テーブル A と B の場合)。データベースの一貫性を維持したいため、トランザクション内にあります。つまり、A のタプルには B の参照が必要です。

2 番目の挿入では、最初の ID が必要ですが、トランザクションをコミットするまでこの ID は取得できません。
だから私は立ち往生しています。最初の挿入をトランザクションから除外したくありません。最初の挿入は正常に行われますが、2 番目の挿入は正常に行われず、データベースに一貫性のない状態が残ることがあります。

この状況でのベストプラクティスは何ですか?

編集: コードは次のとおりです。

指摘したいのは、トランザクションをコミットするまでaIdを取得しないため、B に null を挿入することです。

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

php - MySQLで前の操作でid(主キー)の値を取得する方法

私はMySQLを使用しています。最初に 1 つの行をテーブルに挿入する必要があり、次に挿入された行の ID を取得する必要があります。コードは次のようになります。

列 1

それは

主キー

そしてそれは自動インクリメントです。では、値を取得する方法

列1

前の操作で?

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

php - mysql テーブルでの同時挿入を処理し、正しい挿入 ID をフェッチする方法

PHPライブラリにadodbを使用しています。

レコードが挿入されたIDを取得するには、この関数を使用します

p>

データベーステーブルに複数の同時挿入があるかどうかを知りたいのですが、このメソッドは挿入された各レコードの正しい挿入 ID を返しますか?

私がこれを尋ねている理由は、他のレコードをさらに処理し、関連するテーブルに後続のエントリを作成するために、この最後の挿入 ID を使用するためです。

このアプローチは十分に安全ですか、それとも何か不足していますか。

既存のデータを台無しにすることなく、最後の挿入 ID を他のテーブルへの追加の挿入に安全に使用できるように、適切な作業計画を策定するのを手伝ってください。

ありがとう

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

php - Kohana 3 では、データベース クラスから最後の挿入 ID を取得するにはどうすればよいですか?

modules/database/classes/ のかなりのコードを調べましたが、最後の挿入 ID を返す方法がまだ見つかりません。

どうすれば入手できますか?

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

sql - MySQLで1対1の関係を1対多の関係に変更するにはどうすればよいですか?

現在、YoutubeOAuthトークンの1対1の関係を含むユーザーテーブルがあります。しかし、私は今、複数のビデオサイトをサポートし、これを1対多の関係に分割したいと考えています。

新しいテーブルを設定しました。

トークン-列:id、site、username(Youtubeでのユーザーのユーザー名)、oauth_token、oauth_secret

user_tokens-cols:id、user_id、token_id

現在のユーザーのテーブルからこれらのテーブルにSELECTして、user_tokensテーブルに適切なIDを設定しながら、username、oauth_token、およびoauth_secret列をインポートする方法はありますか?

過去に私はこれを行うための短いPHPスクリプトを作成しましたが、MySQLで直接実行できるかどうかについて常に興味がありました。