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

MYSQL Jika pernyataan dalam transaksi menyebabkan kesalahan

MySQL tidak mengenali pernyataan yang dimulai dengan kata kunci IF sebagai pernyataan SQL yang valid.

IF pernyataan hanya berfungsi dalam konteks pernyataan majemuk (yaitu, blok pernyataan yang diapit di antara BEGIN dan END . Saat ini, pernyataan majemuk hanya didukung dalam konteks program tersimpan (prosedur tersimpan, fungsi, atau pemicu.)

http://dev.mysql.com/doc/refman /5.5/en/begin-end.html

Untuk pengujian, coba...

DELIMITER //

CREATE PROCEDURE usp_test_transaction()
BEGIN
  DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;
  START TRANSACTION;

  -- whatever DML operations and SELECT statements you want to perform go here

  IF (1=1) THEN
    COMMIT;
  ELSE
    ROLLBACK;
  END IF;
END//

DELIMITER ;

CALL usp_test_transaction;

(CATATAN:Saya tidak menganjurkan di sini bahwa transaksi ditangani di dalam prosedur tersimpan. Preferensi pribadi saya adalah TIDAK melakukan ini, dan alih-alih menangani transaksi di tingkat yang lebih tinggi. Tetapi contoh di atas seharusnya berfungsi; Saya yakin MySQL mendukung pemanggilan MULAI TRANSAKSI , COMMIT dan ROLLBACK dalam konteks prosedur tersimpan.)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP memasukkan beberapa kotak centang DAN array kotak teks ke dalam Database MySQL

  2. Cara Menambahkan Waktu ke Nilai Datetime di MySQL

  3. REGEXP Dengan PDO Mysql

  4. Bagaimana cara mendapatkan data dari database mysql menggunakan javascript?

  5. GPL dan libmysqlclient