重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

phpでdbに接続時のトランザクションについて質問です。
質問①:(a)の処理がネットワークやDBでもたついていたら先に(b)が実行されてしまうことはあるのでしょうか?
質問②:(a)が正常に終わったと判断するのはどうしたらいいでしょうか?
質問③:(a)(b)をbiginTransaction()の中に入れたら、(a)が正常に終わってから(b)になるのでしょうか?
質問④:(a)がexecuteメソッドで(b)がexecメソッドの場合、(a)はexecuteメソッドなのでバインドしてる分、時間がかかり先に(b)が実行されることはありますでしょうか?
------------------------
(a)テーブルABCにinsert
(b)テーブルABCから(a)でinsertした結果をselect

A 回答 (2件)


ない。


try catchするとかすればいい。


(a)が正常に終わらなくても(b)は実施できる。実装の問題。
それはトランザクションを切ったかどうかは関係ない。
ロールバックして処理を中断すべきだという仕様ならばそうすればいいだけ。


ない。
    • good
    • 0

わかりませんが、


(a)より先に(b)が実行されるなら、
ミドルウェアとして
終わってると思います。

(a), (b)をbegintransactionの中にいれてみて、
ループで回して、
一万回ぐらい
(a)、(b)を実行してみては。
回数は最初は10回ぐらいで、
100回、1000回と増やす感じで。
(a)で、ABCにinsertしたPKで
(b)でselectするです。
先に(b)が動いたら。
取得できない。
取得件数ゼロか。
取得値のPKの値がなければ。
そこで終えるか、
出力してわかるようにすれば。。

たぶん、大丈夫なのでは?
と、思うです。

いちいち、知らんです。
疑問に思ったことを調べるということと。
本チャンのコードが。
だいぶ、おなじならば。
(この場合だと、ループのところを外して微調整するだけ。)

本チャンコードを意識して、疑問解決調査コードを作って。疑問解決時に、
手なおしてして、
本チャンとして仕上げる

そんなことは、今までなんどもやったことあるけど。

PHP DBのそれが、
どうなん?
とか、いちいち、知らんし。

あんまり知ってる人いないかも。

もし、知ってて、
親切な人がいたらラッキーだけど。

そんな人の回答がくるまえに、
上記のような。
本チャンを意識して疑問解決調査コードで実験して、
OKなら本チャンコードに仕上げる戦略で自力解決するほうがあきらかに早いと思うです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!