Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL - Cara memeriksa apakah MULAI TRANSAKSI aktif

Anda dapat membuat prosedur yang akan mengeksploitasi kesalahan yang hanya dapat terjadi dalam suatu transaksi:

DELIMITER //
CREATE PROCEDURE `is_in_transaction`(OUT $transaction bool)
BEGIN
    DECLARE oldIsolation TEXT DEFAULT @@TRANSACTION_ISOLATION;
    DECLARE EXIT HANDLER FOR 1568 BEGIN
        -- error 1568 will only be thrown within a transaction
        SET $transaction = true;
    END;
    -- will throw an error if we are within a transaction
    SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
    -- no error was thrown - we are not within a transaction
    SET TRANSACTION_ISOLATION = oldIsolation;
    SET $transaction = false;
END//
DELIMITER ;

Uji prosedurnya:

set @within_transaction := null;
set @out_of_transaction := null;

begin;
    CALL is_in_transaction(@within_transaction);
commit;

CALL is_in_transaction(@out_of_transaction);

select @within_transaction, @out_of_transaction;

Hasil:

@within_transaction | @out_of_transaction
--------------------|--------------------
                  1 |                   0

Dengan MariaDB Anda dapat menggunakan @@in_transaction



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Permintaan mysqli dengan pernyataan variabel SET (yaitu beberapa kueri)

  2. $filter tidak berfungsi di JPA/Olingo 2.0.11 dengan MySQL

  3. Temukan susunan kolom MySQL

  4. Hilangkan baris duplikat dalam pernyataan SELECT PostgreSQL

  5. Tip Singkat MySQL:Menggunakan Perintah DROP USER