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

TRIGGERS, които причиняват неуспех на INSERT? Възможен?

От този публикация в блог

MySQL тригери:Как да прекъснете INSERT, UPDATE или DELETE с atrigger? В #mysql на EfNet някой попита:

Как да накарам задействане да прекъсне операцията, ако бизнес правилото ми не успее?

В MySQL 5.0 и 5.1 трябва да прибягвате до някаква измама, за да накарате атригера да се провали и да изпрати смислено съобщение за грешка. Често задаваните въпроси за MySQL StoredProcedure казват това за обработката на грешки:

SP 11. Имат ли SP оператори „повдигане“ за „повдигане на грешки в приложението“? Съжалявам, не в момента. Стандартните SQL оператори SIGNAL и RESIGNAL са в TODO.

Може би MySQL 5.2 ще включва SIGNALstatement, което ще направи това, откраднато направо от MySQL StoredProcedure Programming, остаряло. Какъв е хакът? Ще принудите MySQL да се опита да използва колона, която не съществува. грозен? да. Работи ли? Разбира се.

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. Предотвратяване на автоматично увеличение на MySQL дубликат вмъкване

  2. Свързване с MySQL бази данни

  3. Как да изпълним MySQL команда от шел скрипт?

  4. Как да инсталирате phpMyAdmin в собствено приложение

  5. Как да видите текущите връзки в MySQL Workbench с помощта на GUI