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

MySQLDBでトランザクションが機能しない

    おそらく、テーブルはMyISAMストレージエンジンをデフォルトとして作成されています。MyISAMストレージエンジンはトランザクションをサポートしていません。

    テーブルを作成

    CREATE TABLE a ( id SERIAL PRIMARY KEY) ENGINE = MYISAM;
    

    クエリ

    DELETE FROM a;
    SET autocommit = 0;
    START TRANSACTION;
    INSERT INTO a(id) VALUES(1);
    ROLLBACK WORK;
    SELECT COUNT(*) FROM a;
    

    結果

    count(*)

         1
    

    テーブルをInnoDBにする

    クエリ

    ALTER TABLE a ENGINE=INNODB; 
    

    クエリ

    DELETE FROM a;
    SET autocommit = 0;
    START TRANSACTION;
    INSERT INTO a(id) VALUES(1);
    ROLLBACK WORK;
    SELECT COUNT(*) FROM a;
    

    結果

    count(*)  
    ----------
             0
    



    1. 新しいSQLPerformance.comニュースレター

    2. SSMSを使用したSQLServerエージェントのジョブ履歴の表示

    3. SQLAlchemyを使用したOracleデータベースへの接続

    4. Oracleデータベースに接続しているすべてのセッションを強制終了するにはどうすればよいですか?