PDO::beginTransaction()
2006/01/29 18:38
PDOでMySQLを使っていると、どうもトランザクションが効いてないっぽい。SQLが次から次へとオートコミットされてしまう。
こりゃおかしい、EngineもInnoDBに変更してるはずなのに、と。
どうやらPDOでは、レコードセットを返すクエリーではPDO::queryを、返さないクエリーではPDO::execを、といった具合に使い分ける様で。
なるほど、PDO::execからクエリーを投げれば、確かにトランザクションの対象になる。何やら面倒くさいなぁとも思ったが、PDO::execはレコードセットではなく、変更されたレコードの数が返る。これはこれで便利かもしれない。
今日の作業でちょっとハマりました、という話。
トラックバック
トラックバックURL http://mt.b-shock.co.jp/mt-tb.cgi/153
コメント
オート機能とかもあるんだ~
コマンドベースで今勉強中です^^
ぷーさんは、何でもできる人なんだねw
さすがだ!
私も1つくらい何かできるようにならなくちゃ><。
あれれ?
昨日コメント残したのに
反映されてない;;
なんでだろぉ...
あーちゃん、いらっしゃい。
このブログは、ぼくが承認したコメントのみ表示される設定なんですが(荒らし対策)、昨日はちょっと立て込んでてチェックし忘れました。ごめんなさい。
MySQLでは、トランザクションを開始する前に投げたクエリーは全て、その場でコミットされるんです。...ってOracleもそうじゃなかったっけ? :-)
試験勉強、大変だろうけどがんばってね。