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

php - PHP 関数「last_insert_id()」から値を取得する

'last_insert_id()' から値を取得する際に問題があります。テーブル 'memo' の id に同じ id 番号を挿入したいです。ただ、問題は foreach の後、last_insert_id() が新しい値を取得するので、変数を作成して「last_insert_id()」から値を取得しようとしたのですが、うまくいきませんでした。

}

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

mysql - MySQL INSERT と SELECT LAST_INSERT_ID() を 1 行で

この文を変更する方法があるかどうか疑問に思っていました

1 行に。次のようなもの

(これは事実上 1 行で記述できます)

WHEN ( INSERT INTO ...)ステートメントが試行され、確認できる値が返されるか?

ステートメントINSERT内にある場合でも実行しますか?CASE

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

php - PDO トランザクションが最後に挿入された ID が table1 に挿入され、table2 で使用されます

2 つの異なる db テーブルにデータを公開するフォームがあります。私の取引は以下で見ることができます。

ただし、テーブル「タスク」には、値をバインドする別の列「client_id」があります。ここの値は、クライアント テーブルで自動インクリメントされた id 値と同じである必要があります。

そのため、テーブル 1 から最後のインサート ID を取得し、その値をテーブル 2 で使用する必要があります。うまくいかなかった失敗した試みをアウトコメントし、NULL を返しました

これを管理する方法について、誰かが私にいくつかの指針を教えてもらえますか?

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

mysql - MySQL の TRIGGER 内から LAST_INSERT_ID() を変更します。

BEFORE INSERT TRIGGER列の値を計算するために使用される がありAUTO_INCREMENTます ( id_2)。

PRIMARY(id_1, id_2) があり、InnoDB を使用しています。以前は、テーブルは MyISAM を使用していましたが、問題はありませんでしid_2た。さて、InnoDB に切り替えた後、同じことを行うためのトリガーがあります。AUTO_INCREMENTid_1id_2

これは完全に機能しますが、LAST_INSERT_ID()値が間違っている (0 を返す) ことを除きます。LAST_INSERT_ID()多くのコードは、正しいかどうかに依存しています。ただし、MySQL 5.0.12 以降、LAST_INSERT_IDTRIGGERS 内で行われた変更はグローバル値に影響しません。これをバイパスする方法はありますか?を呼び出してAFTER UPDATE TRIGGERを変更する を簡単に設定できますが、クライアント側は0 に設定されます。LAST_INSERT_IDLAST_INSERT_ID(NEW.id_2)LAST_INSERT_ID

LAST_INSERT_IDトリガー内で変更された状態を MySQL に強制的に維持させるための回避策はありますか? これをすぐにサポートする MyISAM に戻すかSELECT max(id_2) FROM tbl WHERE id_1 = :id、トランザクションの一部として別の行を実行して、見つかった行が以前に挿入された行になるようにする以外に、代替手段はありますか?

例:

最初のステートメントは、行1 | 4 | 'd'をテーブルに挿入します。2 番目のステートメントは を返します0が、返す必要があり4ます。

Ravinder Reddyの質問に応じて、システムに関する簡単な説明を追加します。

バスケットを含むテーブルがあり、項目を含む別のテーブル ( tbl) があります。バスケットはアプリケーションによって作成され、バスケットのテーブルから ID が割り当てられます。タスクは、id = のバスケットにアイテムを に挿入し、そのバスケットのスコープ内で一意の ID を割り当てることです。各アイテムには関連するものがあり、同じバスケット内で繰り返される場合があります。したがって、実際には、すべてのエントリを 1 つのバスケットに格納し、これらの個々のエントリを-ペアで参照 (および取得) できるようにしようとしています。AUTO_INCREMENTid_1tbldatadataid_1id_2

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

sql - Cakephp の保存が機能していません 2.X

私はCakePHP 2.3を使用しています。次のようにデータを保存します。

上記のコードは機能しません。次のような別の方法を試しました:

最後に挿入された ID を取得するにはどうすればよいですか? getLastInsertId()以下のように、最後に挿入されたIDを取得していました。

しかし、うまくいかないようです。

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

php - SQL挿入行と挿入された自動インクリメントIDを別の列にコピーする

PHPとMySQLを使用しています。

ゴール:

自動インクリメント ID 列を持つテーブルに新しい行を挿入します。
この新しい行を挿入するときに、新しく挿入された行の自動インクリメント ID # を同じ行/エントリの別の列にコピーしたいと思います。
作成時に、新しいエントリ/行には、自動インクリメントされた id 列と同じ番号の別の列が必要です。

私の最大の懸念
は、他の接続からの他のトランザクションがサーバー上で発生している可能性がある場合でも、これらすべてが正しく確実に行われる必要があることです。

これまでのところ


私はlast_insert_id () について少しだけ知っています...そして、これを自分のニーズに確実に使用できるようになることを恐れています...おそらく別の接続からのいくつかの他の挿入クエリ) そして今、私は正しい ID を取得しません #? (接続ごとに last_insert_id() がクライアントに与えられたときの意味を完全には理解していませんでした)。

トランザクションがロールバックされると未定義になるため、last_insert_id() はトランザクションでうまく機能しますか? (別のトランザクションがロールバックされた直後にこのスクリプトを実行すると、スクリプトは last_insert_id() に対して NULL を返しますか?)

mysql_insert_id(); がわかりません。それを使用する方法と、それが私を助けるかどうか。

これまでのところ、次のことを考えてきました。

  1. columnlast_insert_id() として設定されたINSERT 行;
  2. 行を挿入します。UPDATE columnwith SELECT last_insert_id();
  3. SELECT last_insert_id(); last_insert_id()+1 を使用しauto-increment columnて行を挿入column

選択した値を自動インクリメント列に挿入するとどうなりますか? 自動インクリメント ジェネレーターは、挿入した数値からカウントを開始しますか? 以前に使用された (しかし、もう存在しない) 値を使用し、その値の後に id # を持つレコードが存在する場合はどうすればよいですか?

テーブルまたは行をロックすると、目的の動作を実現できますか?

このようなことを行う適切な/正しい方法は何ですか?



"last_insert_id() は接続ごとにクライアントに与えられます"

last_insert_id はクライアントに依存せず、そのクライアントから最後に挿入された行の ID を返すため、別の接続のユーザーがデータベースとトランザクションを行う場合について心配する必要はありません。

それが何を意味するのか、私はまだ完全には理解していません...

基本的なシナリオの場合:

そこで何が起こるの?


そして、私が本当に気になるシナリオ:

この場合、人物 A の last_insert_id() は 1 カウント遅れています。これが本当なら、3 番目の方法は使えません。


間違っている可能性がある場合は、出力を修正してください。

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

mysql - 最後に追加されたアイテムのインスタンスを取得するにはどうすればよいですか

mysql バックエンドで github.com/jinzhu/gorm を使用しています。前の Create 呼び出しで行の Id (または完全なエンティティ) を取得したいと考えています。

のように、last-insert-id: ( http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id )

これどうやってするの?