Mysql
 sql >> база данни >  >> RDS >> Mysql

MYSQL If оператор в транзакцията причинява грешка

MySQL не разпознава израз, започващ с ключовата дума IF като валиден SQL израз.

IF изразът работи само в контекста на съставен израз (тоест блок от изрази, затворен между BEGIN и END . Понастоящем съставният израз се поддържа само в контекста на съхранена програма (запомнена процедура, функция или тригер.)

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

За тестване опитайте...

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;

(ЗАБЕЛЕЖКА:Тук не препоръчвам транзакциите да се обработват вътре в съхранена процедура. Моето лично предпочитание е да НЕ правя това, а вместо това да обработвам транзакции на по-високо ниво. Но примерът по-горе трябва да работи; Вярвам, че MySQL поддържа извикване START TRANSACTION , COMMIT и ROLLBACK в контекста на съхранена процедура.)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql:Изберете редове от таблица, които не са в друга

  2. Изберете къде номер на ред =номер на ред

  3. Размер за съхранение на IPv4, IPv6 адреси като низ

  4. Как мога да създам приложение за Android с локална база данни MySQL?

  5. Заменете дума в BLOB текст с MySQL