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

mysql задейства симулиращи твърдения

Е, проблемът е, че MySQL няма еквивалент на STOP ACTION команда. Така че по принцип работата е доста мръсна:

Един от начините е, че можете да нарушите ограничение вътре в тригера, за да пуснете грешка и да отмените вмъкването:

CREATE TABLE stop_action (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(35),
    UNIQUE KEY (id, name)
);
INSERT INTO stop_action (1, 'Assert Failure');

След това в спусъка просто опитайте да:

INSERT INTO stop_action (1, 'Assert Failure');

Предимството на това е, че върнатата грешка ще бъде грешка с дублиран ключ и текстът ще включва „Неуспешно потвърждаване“.

Така че тогава спусъкът ви ще бъде:

delimiter |

CREATE TRIGGER asser1_before BEFORE INSERT ON test1
  FOR EACH ROW BEGIN
    SELECT count(*) INTO test FROM (select count(*)
          from Video  
          where Date >= DATE_SUB(current_date(),INTERVAL  1 YEAR ) 
            && Date<=current_date()  
          group by User   
          having count(*) > 200);
    IF test != 0 THEN
        INSERT INTO stop_action (1, 'Assert Failure');
    END IF;
  END;
|

delimiter ;

Сега ще трябва да направите това преди UPDATE също така, в противен случай можете да актуализирате датата в невалидно състояние. Но в противен случай това поне трябва да ви помогне да започнете...




  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. Как да активирам INNODB в mysql

  3. Премахнете напълно MySQL Ubuntu 14.04 LTS

  4. Достъп до масив в масив PHP

  5. вмъкване на стойност на формата за избор на html в базата данни на mysql