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

грешка в синтаксиса на mysql create trigger

Когато се опитате да генерирате грешки чрез SIGNAL трябва да посочите SQLSTATE което е кодът на грешката и за дефинираните от потребителя общи кодове за грешка е 45000 заедно с текста на съобщението MESSAGE_TEXT

Така тригерът става като

delimiter //
create trigger lock_x_id before update on games
for each row
begin
 if old.xid is not null then
   signal SQLSTATE VALUE '45000' SET MESSAGE_TEXT = 'Your custom error message';
 end if;
end;//
delimiter ;

Тестов случай

mysql> select * from games;
+----+------+------+
| id | xid  | val  |
+----+------+------+
|  1 | NULL |    1 |
|  2 | NULL |    2 |
|  3 | NULL |    3 |
|  4 |    1 |    4 |
|  5 |    2 |    5 |
+----+------+------+

Нека сега създадем тригера

mysql> delimiter //
mysql> create trigger lock_x_id before update on games
    -> for each row
    -> begin
    ->  if old.xid is not null then
    ->    signal SQLSTATE VALUE '45000' SET MESSAGE_TEXT = 'Your custom error message';
    ->  end if;
    -> end;//
Query OK, 0 rows affected (0.05 sec)


mysql> update games set xid = 4 where id = 1;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> update games set xid = 5 where id=5;
ERROR 1644 (45000): Your custom error message

И след като изпълните горните 2 команди за актуализиране, ето как изглежда таблицата

mysql> select * from games;
+----+------+------+
| id | xid  | val  |
+----+------+------+
|  1 |    4 |    1 |
|  2 | NULL |    2 |
|  3 | NULL |    3 |
|  4 |    1 |    4 |
|  5 |    2 |    5 |
+----+------+------+

Имайте предвид, че втората актуализация е неуспешна и редът е непроменен.

Прочетете повече за това https://dev.mysql.com/doc /refman/5.5/en/signal.html




  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 jdbc jar?

  2. Всяка извлечена таблица трябва да има своя собствена грешка в псевдонима

  3. Как работи операторът SOUNDS LIKE в MySQL

  4. Въпрос за производителност за подизбор на MySQL?

  5. Идентификатор на ресурс #10, когато искам да повторя променлива с php и mysql