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

Отстраняване на грешки в MySQL тригери

Има алтернативен начин да го тествате, като имате временен debug маса . В примера тук те го създават в собствен debug база данни.

Стъпка 1: Създайте таблица

DROP TABLE IF EXISTS debug;
CREATE TABLE debug (
  proc_id varchar(100) default NULL,
  debug_output text,
  line_id int(11) NOT NULL auto_increment,
  PRIMARY KEY  (line_id)
)

Стъпка 2: Създайте SP за отстраняване на грешки, за да попълните таблицата за отстраняване на грешки

DELIMITER $$

DROP PROCEDURE IF EXISTS `debug_insert` $$
CREATE PROCEDURE `debug_insert`(in p_proc_id varchar(100),in p_debug_info text)
begin
  insert into debug (proc_id,debug_output)
  values (p_proc_id,p_debug_info);
end $$

DROP PROCEDURE IF EXISTS `debug_on` $$
CREATE PROCEDURE `debug_on`(in p_proc_id varchar(100))
begin
  call debug_insert(p_proc_id,concat('Debug Started :',now()));
end $$

DROP PROCEDURE IF EXISTS `debug_off` $$
CREATE PROCEDURE `debug_off`(in p_proc_id varchar(100))
begin
  call debug_insert(p_proc_id,concat('Debug Ended :',now()));
  select debug_output from debug where proc_id = p_proc_id order by line_id;
  delete from debug where proc_id = p_proc_id;
end $$

Стъпка 3: Извикайте SP за отстраняване на грешки във вашия тригер

Като това,

CREATE PROCEDURE test_debug()
begin
declare l_proc_id varchar(100) default 'test_debug';
  call debug_on(l_proc_id);
  call debug_insert(l_proc_id,'Testing Debug');
  call debug_off(l_proc_id);
end $$

В резултат на това таблицата за отстраняване на грешки ще бъде попълнена, както следва,

+------------------------------------+
| debug_output                       |
+------------------------------------+
| Debug Started :2006-03-24 16:10:33 |
| Testing Debug                      |
| Debug Ended :2006-03-24 16:10:33   |
+------------------------------------+


  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 CASE?

  3. QueryException SQLSTATE[HY000] [1045] Достъпът е отказан за потребител 'homestead'@'localhost' (използвайки парола:ДА)

  4. host localhost няма право да се свързва с този MySQL сървър

  5. Създаване на таблица с mysql, php и ajax (с jquery)