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

更新に失敗した場合のMysqlトランザクションのロールバック

    これがPHPです(テストされていません。状況に適応する必要があります):

    mysql_query('START TRANSACTION;')
    mysql_query("UPDATE posts SET status='approved' where post_id='id' AND status != 'approved';");
    if (mysql_affected_rows()){
        mysql_query('COMMIT');
    } else {
        mysql_query('ROLLBACK');
    }
    

    または、賢くなり、SQLでそれを実行したい場合( ROW_COUNT() および IF ):

    START TRANSACTION;
    UPDATE posts SET status='approved' where post_id='id' AND status != 'approved';
    SELECT ROW_COUNT() INTO @affected_rows;
    -- .. other queries ...
    IF (affected_rows > 0) THEN
        COMMIT;
    ELSE
        ROLLBACK;
    END IF
    


    1. PostgreSQL用のpgModelerの概要

    2. Djangoプロジェクトをsqlite3バックエンドからpostgresqlに切り替えると、データダンプの読み込みに失敗します

    3. 複数の値を取得するためのDjangoMySQLの個別のクエリ

    4. PgBackRestをインストールする方法