sql >> Databáze >  >> RDS >> Mysql

Příkaz MYSQL If v transakci způsobující chybu

MySQL nerozpozná příkaz začínající klíčovým slovem IF jako platný SQL příkaz.

IF příkaz funguje pouze v kontextu složeného příkazu (tj. bloku příkazů uzavřených mezi BEGIN a END . V současné době je složený příkaz podporován pouze v kontextu uloženého programu (uložená procedura, funkce nebo spouštěč.)

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

Pro testování zkuste...

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;

(POZNÁMKA:Neobhajuji zde, aby transakce byly zpracovávány uvnitř uložené procedury. Moje osobní preference je NEDĚLAT to a místo toho zpracovávat transakce na vyšší úrovni. Ale výše uvedený příklad by měl fungovat; věřím, že MySQL podporuje volání START TRANSACTION , COMMIT a ROLLBACK v kontextu uložené procedury.)




  1. Problém s vyrovnávací pamětí MySqlDataReader GetBytes...

  2. Upozornění:mysql_num_rows() očekává, že parametr 1 bude zdrojem, booleovský zadaný v /home/folder/public_html/folder/folder/login.php na řádku 18

  3. Používání klientských aplikací MySQL

  4. SQL Server:Databáze se zasekla ve stavu Obnovování