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

Mysqlトランザクション:コミットとロールバック

    1)行ったすべての変更は、同じトランザクション内に表示されます。もしそうなら

    START TRANSACTION;
    INSERT INTO MyTable VALUES ('Hi there');
    SELECT * FROM MyTable;
    

    出力には「こんにちは」が含まれます。ただし、2番目のデータベース接続を開始すると、最初の接続内からトランザクションをコミットするまで、新しい行は表示されません。コマンドラインを使用して2つのデータベース接続を使用してこれを試してみてください。

    2つのデータベース接続内で同じトランザクションを実行できないため、Webサイトに効果が表示されません(リクエストの開始時に新しいdb接続が作成されます)。

    2)コミットされていないすべてのトランザクションは、データベースとの接続が閉じられたときにロールバックされます。したがって、これらが2つのクエリだけである場合、違いはありません。ただし、

    には違いがあります
    START TRANSACTION;
    INSERT INTO MyTable VALUES ('This one would be discarded on rollback');
    ROLLBACK;
    INSERT INTO MyTable VALUES ('This one will be permanent because not within transaction');  
    

    3)はい、これらはすべて同じです。



    1. MySQL:存在しない場合は制約を追加します

    2. VirtualBoxを使用してMacにSQLServerをインストールする方法

    3. データベースをセットアップし、AWSRedshiftとMysqlで読み取り専用ユーザーを作成します

    4. アクティブなレコードを使用するときにcodeigniterのバッククォートを無視するにはどうすればよいですか?ケースごとに注文する必要があります