sql >> データベース >  >> RDS >> Mysql

mysql_queryはすべてをコミットしますか

    古いmysql拡張機能には、トランザクション制御専用の関数はありませんが、SQLステートメントを発行して必要な処理を実行できます。

    トランザクションを開始するだけで、1つのトランザクションの期間中は暗黙的に自動コミットをオフにできます。

    mysql_query("START TRANSACTION");
    

    COMMITまたはROLLBACKを実行するとすぐに、自動コミットモードがデフォルトに戻ります。

    mysql_query("COMMIT"); // or ROLLBACK
    

    セッション変数を設定することで、セッション全体の自動コミットをオフにできます:

    mysql_query("SET autocommit=0");
    

    または、MySQLインスタンスでグローバルに変更して、すべてのセッションのデフォルトを変更します。

    mysql_query("SET GLOBAL autocommit=0");
    

    または、/ etc / my.cnf:

    を編集して、MySQLサービスの起動時にグローバル設定を変更するように設定します。
    [mysqld]
    autocommit=0
    

    MySQL 5.1を使用する場合は、これを少し異なる方法で行う必要があります。

    [mysqld]
    init_connect='SET autocommit=0'
    

    おそらくすでにご存知でしょうが、InnoDBテーブルを使用している場合にのみ、トランザクションが意味することを繰り返す必要があります。 MyISAMテーブルはトランザクションをサポートしていないため、設定に関係なく常に自動コミットされます。 MEMORYやCSVなど、他のいくつかのストレージエンジンと同じです。




    1. 値の配列をストアドプロシージャに渡すにはどうすればよいですか?

    2. Zend \ Db:サブクエリから選択

    3. mysqlテーブルのインデックスを再作成する方法

    4. PL / SQLDeveloperを使用してリモートOracleDBに接続するにはどうすればよいですか?