web-dev-qa-db-ja.com

テーブルに最後に挿入されたIDを見つけるための安全な方法は?

更新の直後に最後に更新された$wpdb->insert_id;idを見つけるためにrow idを使っても安全ですか?例:

 $sql = $wpdb->insert($table_name, $arrayWithDataToInsert, array('%s','%s'));
            $results['new_created_id'] = $wpdb->insert_id;

それとも、私の直後に挿入された別の行のIDをキャッチする可能性がありますか。

ありがとうございます。

2
Regis Zaleman

より高いレベルでは、php/dbコネクタが$ wpdb-> insert_idに頼って正しいIDを返すかどうかを知る手段は本当にありません。 100%確実であるための唯一の方法はあなたが知っている(そしてそのようにインデックスを付けられる)キーを追加することです。その後、その一意のキーに対してテーブルを照会することでIDを取得できます。

私がこれを書いているのは、トリガー関数がDB内から行を追加する場合、あるいはもっと重要なことに、プラグインがwpdbにフックしているのと同じように挿入している場合などです。 、あなたは安全ではありません。

そのことを念頭に置いて、WPコミュニティ(そしてその点に関しては他のほとんどのコミュニティ)の誰もがDBができることについての最も簡単な考えを持っていて、まるでそれが巨大な配列の束であるかのように扱います。だから実際にそれに頼るのはとても安全です。

4