2,309 views
この記事は最終更新から 2998日 が経過しています。
やってみたいこと
先に記した「(14) SQLiteでトランザクション」と同じことをMySQLでもやってみる。
トランザクションを使いたい場合、MySQLのDBは InnoDB で作ること。
トランザクションを使わない場合、MyISAM を選んでもよい。
両者のメカニズムの違いはググると情報が得られる。
プログラム作成
// DB接続
$cMySQL = new mysqli("localhost", DB_USER, DB_PW, DB_NAME);
if($cMySQL === FALSE){
goto tagEND;
}
// Transaction開始
if($cMySQL->begin_transaction() === FALSE){
goto tagEND;
}
// データ挿入#1
$sql = "INSERT INTO `user` (`id`,`name`,`age`) VALUES(NULL,'Kimoto','41');";
if($cMySQL->query($sql) === FALSE){
$cMySQL->rollback(); goto tagEND;
}
// データ挿入#2
$sql = "INSERT INTO `score` (`id`,`get`,`lost`) VALUES(NULL,'11','18','2');";
if($cMySQL->query($sql) === FALSE){
$cMySQL->rollback(); goto tagEND;
}
// Transaction終了(COMMIT)
if($cMySQL->commit() === FALSE){
$cMySQL->rollback(); goto tagEND;
}
tagEND:
if($cMySQL){
$cMySQL->close();
}
PHP ver.5.5以前の場合
上記のラッパー関数は使えない。SQLコマンドを直に打つこと。
$cMySQL->query("SET AUTOCOMMIT=0;");
$cMySQL->query("BEGIN;");
:
$cMySQL->query("COMMIT;");
or
$cMySQL->query("ROLLBACK;");
アクセス数(直近7日): ※試験運用中、BOT除外簡易実装済2025-11-17: 4回 2025-11-16: 4回 2025-11-15: 5回 2025-11-14: 4回 2025-11-13: 4回 2025-11-12: 4回 2025-11-11: 4回