2012-11-08 109 views
1

我很困惑abt通過php腳本運行交易。 在MySql中,autocommit設置爲1, ,但是當我運行腳本時交易MySql和php

ex:mysql_query(「START TRANSACTION」);

$sql="INSERT INTO 
`address`(`Address_Id`, 
`Address_Line1`, 
`Address_line2`, 
`Zip`, 
`Created_By`, 
`Created_Date`, 
`Updated_By`, 
`Updated_Date`) 
VALUES ('2','this is test1','test2','210','SYSTEM','NOW()','SYSTEM','NOW()')"; 

mysql_query($sql); 

當我不提交時,表中插入的記錄爲零。 只有當我發出提交命令時,記錄纔會出現。

也請告訴我,如果在一個PHP腳本,我開始交易,然後不給或者回滾或提交陳述

+0

您是使用InnoDB還是MyISAM存儲引擎? –

回答

0

http://dev.mysql.com/doc/refman/5.5/en/commit.html會發生什麼:

默認情況下,MySQL的運行與啓用自動提交模式。這意味着只要執行更新(修改)表的語句,MySQL就會將更新存儲在磁盤上以使其永久保存。

但是,如果您明確指定START TRANSACTION - 那麼它不會被考慮在內,因此您在應該提交的事務中工作。

+0

感謝您的信息:) – VYSHNAVI

+0

也可以說明,如果在給予START TRANSACTION之後會發生什麼情況,如果我沒有提交或回滾... – VYSHNAVI

+0

@VYSHNAVI:如果事務沒有提交 - 那麼它會回滾 – zerkms

0

試着這樣做。

mysql_query("BEGIN"); 

     $query=""; 
     $result=mysql_query($query); 

     if($result==0) 
     { 
      mysql_query("ROLLBACK"); 
      echo $error_message; 
      // mysql_query($query_setId); 
      die(); 
     } 

    mysql_query("COMMIT");