$link = mysql_connect('localhost', 'root', ''); if (!$link) { die('Could not connect: ' . mysql_error()); } mysql_select_db('test', $link) or die ('Can/'t use [test]: ' . mysql_error()); mysql_query("BEGIN"); //或者mysql_query("START TRANSACTION"); //若不使用事務,則$sql執行成功,$sql1執行失敗 $sql = " insert into test values('11','88') "; $sql1 = " insert into test values('11','88','444') "; $res = mysql_query($sql); $res1 = mysql_query($sql1); //因爲使用了事務,則兩個insert都執行失敗 if($res & & $res1){ mysql_query("COMMIT"); } else{ mysql_query("ROLLBACK"); } mysql_close($link); // connect db.... mysql_query("SET AUTOCOMMIT=0"); //設置mysql不自動提交,需自行用commit語句提交 $sql = " insert into test values('11','88') "; $sql1 = " insert into test values('11','88','444') "; $res = mysql_query($sql); $res1 = mysql_query($sql1); //因爲使用了事務,則兩個insert都執行失敗 if($res & & $res1){ mysql_query("COMMIT"); }else{ mysql_query("ROLLBACK"); } //对于不支持事务的MyISAM引擎数据库可以使用表锁定的方法: //MyISAM & InnoDB 都支持, //Notes:query語句不能寫在一起如:mysql_query("select * from a;select * from b;"); $sql_1=" LOCK TABLES test WRITE "; mysql_query($sql_1); $sql_2=" INSERT INTO test VALUES('".$a."','".$b."') "; if(mysql_query($sql_2)){ echo 'successful!'; }else{ echo 'Unsuccessful!'; } $sql_3=" UNLOCK TABLES "; mysql_query($sql_3); // close db...
PHP对MYSQL数据库进行事务处理及表锁定
最新推荐文章于 2021-04-08 16:59:02 发布