1

PHPスクリプトを介してトランザクションを実行することに混乱しています。私のMySql autocommitは1に設定されていますが、スクリプトを実行すると

例: 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);

commit しないと、テーブルに挿入されたレコードはゼロになります。コミットコマンドを与えた場合にのみ、レコードが表示されます。

また、phpスクリプトでトランザクションを開始し、ロールバックまたはコミットステートメントを指定しないとどうなるか教えてください

4

2 に答える 2

0

http://dev.mysql.com/doc/refman/5.5/en/commit.html

デフォルトでは、MySQLは自動コミットモードを有効にして実行されます。これは、テーブルを更新(変更)するステートメントを実行するとすぐに、MySQLが更新をディスクに保存して永続的にすることを意味します。

ただし、START TRANSACTION明示的に指定すると、それは考慮されないため、コミットする必要のあるトランザクションで作業します。

于 2012-11-08T11:04:49.987 に答える
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");
于 2012-11-08T11:11:42.070 に答える