Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak przerwać operację INSERT w wyzwalaczu MySql?

Natknąłem się na to i chociaż rozwiązanie działa, później natknąłem się na to, co wydaje mi się lepszym rozwiązaniem. Podejrzewam, że nie była to opcja, gdy pierwotnie udzielono odpowiedzi na to pytanie.

CREATE TRIGGER `TestTable_SomeTrigger`
BEFORE UPDATE ON `test_table`
FOR EACH ROW
BEGIN
    DECLARE msg VARCHAR(255);
    IF (SomeTestToFail = "FAIL!") THEN
        set msg = "DIE: You broke the rules... I will now Smite you, hold still...";
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = msg;
    END IF;

    -- Do any other code here you may want to occur if it's all OK or leave blank it will be
    --  skipped if the above if is true
END$$

Spowoduje to teraz zwrócenie ładnego (lub złego!) komunikatu o błędzie, który można złapać. Aby uzyskać więcej informacji na ten temat, zobacz:http://dev.mysql.com/doc/refman/5.5/en/signal.html

Mam nadzieję, że to pomoże komuś innemu!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak rozwiązać problem Nie można załadować wtyczki uwierzytelniającej „caching_sha2_password”

  2. Jak uzyskać rozmiar bazy danych MySQL?

  3. Praca z wyzwalaczami w bazie danych MySQL — samouczek

  4. Jak zainstalować MySQL 8 z Workbench w systemie Windows 10?

  5. Jak zabezpieczyć MySQL:część pierwsza