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

AKTYWATORY, które powodują niepowodzenie INSERT? Możliwy?

Z tego post na blogu

Wyzwalacze MySQL:Jak przerwać INSERT, UPDATE lub DELETE za pomocą wyzwalacza? Na #mysql EfNet ktoś zapytał:

Jak sprawić, by wyzwalacz przerwał operację, jeśli moja reguła biznesowa zawiedzie?

W MySQL 5.0 i 5.1 musisz uciec się do pewnych sztuczek, aby wywołać awarię i dostarczyć zrozumiały komunikat o błędzie. Często zadawane pytania dotyczące MySQL StoredProcedure mówią o obsłudze błędów:

SP 11. Czy dostawcy usług mają oświadczenie „podnoszenie” do „podnoszenia błędów aplikacji”? Przepraszamy, nie teraz. Standardowe instrukcje SQL SIGNAL i RESIGNAL znajdują się w TODO.

Być może MySQL 5.2 będzie zawierał SIGNALstatement, który sprawi, że ten hack skradziony prosto z MySQL StoredProcedure Programming stanie się przestarzały. Co to jest hack? Zmusisz MySQL, aby spróbował użyć kolumny, która nie istnieje. Brzydki? Tak. Czy to działa? Jasne.

CREATE TRIGGER mytabletriggerexample
BEFORE INSERT
FOR EACH ROW BEGIN
IF(NEW.important_value) < (fancy * dancy * calculation) THEN
    DECLARE dummy INT;

    SELECT Your meaningful error message goes here INTO dummy 
        FROM mytable
      WHERE mytable.id=new.id
END IF; END;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instalowanie MySQL na CentOS 7

  2. Łączenie operacji UNION i LIMIT w zapytaniu MySQL

  3. PostgreSQL a MySQL

  4. Błąd krytyczny Wordpress:Nieprzechwycony błąd:Wywołanie niezdefiniowanej funkcji mysql_connect() w /wp-includes/wp-db.php:1570

  5. Jak podłączyć bazę danych mySQL za pomocą C++