サポート » 使い方全般 » INSERT直後に指定カラムの値を取得する方法

  • 解決済 mikazukimika

    (@mikazukimika)


    INSERT直後にIDを取得するときは$wpdb->insert_id;で取得できますが、しかし困ったことにこれはオートインクリメントのカラムしかレコードの値が得られませんよね。

    オートインクリメントでないouter_IDというカラムの値を得る方法はございますでしょうか?
    $wpdb->outer_ID;のような感じでできたらと思っているのですが、ひょっとして新たにSELECTするしかありませんか?

    オートインクリメントの設定がないとき$wpdb->insert_id;0を返すようで、これでは挿入された場所が特定できないので困っているのですが…

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • こんにちは

    オートインクリメントのプライマリキーの値しか取得できないのは PHP の MySQL ドライバの仕様なのでどうしようもありません。
    insert 後に全カラムを取得できるような便利関数があったとしても、内部では select し直していると思います。
    ですので、不要でもオートインクリメントのプライマリキーのカラムを作るのも手かなと思います。

    でも、オートインクリメントではないouter_IDの値は SQL 中の関数や PHP で生成しているのでしょうか?
    独自にMAX(outer_ID) + 1などでプライマリキーを生成している場合、トランザクション制御しないとタイミングによってキーが重複して insert がエラーになる可能性がありますので、$wpdb で insert するのは避けた方が良いと思います。
    念のため。

    トピック投稿者 mikazukimika

    (@mikazukimika)

    こんにちは

    いつもお世話になっております。
    基礎をすっとばしてWordPressに入ってしまったので、ドライバの仕様などの知識がございませんでした。
    そういうことでしたら仕方ないですね。

    よく「とりあえずオートインクリメントのID作っておけ」という記事を読みますが、こういったケースでの有用性があったわけですね。

    念のための方もご親切にありがとうございます。
    あまり考えておりませんでしたのでそういったご指導はありがたく感じます。

    また機会がございましたら宜しくお願いいたします。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「INSERT直後に指定カラムの値を取得する方法」には新たに返信することはできません。