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

Bagaimana cara mendeteksi rollback dalam prosedur tersimpan MySQL?

Anda dapat menambahkan parameter keluaran lalu menyetelnya ke nilai yang Anda inginkan di penangan keluar.

Berikut ini contoh menggunakan proc Anda:

delimiter $$
  create procedure multi_inserts(
  IN var1 int(11),
       .
       .
       .
  IN string1 text,
  OUT p_return_code tinyint unsigned
  )
  BEGIN

  DECLARE exit handler for sqlexception
  BEGIN
    -- ERROR
    set p_return_code = 1;
    rollback;
  END;

  DECLARE exit handler for sqlwarning
  BEGIN
    -- WARNING
    set p_return_code = 2;
    rollback;
  END;

  START TRANSACTION;
  insert into table1(a,b,c,d) values(var1,var2,var3,var4);
  insert into table2(e,f,g) values(var5,var6,string1);
  COMMIT;

  -- SUCCESS
  set p_return_code = 0;

  END $$
  delimiter ;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nilai default tidak valid untuk bidang stempel waktu 'buat_tanggal'

  2. Bagaimana saya bisa menekan output tajuk kolom untuk satu pernyataan SQL?

  3. MySQL InnoDB hanya mengunci baris yang terpengaruh?

  4. Apakah ukuran tabel memengaruhi kinerja INSERT?

  5. Bagaimana cara mengubah karakter aneh ini? (ë, , , , )