Mysql 向触发器添加注释(说明)

Mysql 向触发器添加注释(说明),mysql,triggers,Mysql,Triggers,如果我在MySQL中使用create trigger语法创建一个触发器,我如何向它附加一个描述它的注释?我的意思是在声明中或之后,对我来说都是一样的 我想不出来。对于您添加的表,COMMENT='Wonder table With users inside'在声明的末尾。但是如何向触发器添加注释呢?作为一种解决方法,您可以在触发器的主体中写入注释文本,例如- CREATE TRIGGER trigger1 AFTER INSERT ON table1 FOR EACH ROW BEGIN -

如果我在MySQL中使用
create trigger
语法创建一个触发器,我如何向它附加一个描述它的注释?我的意思是在声明中或之后,对我来说都是一样的


我想不出来。对于您添加的表,
COMMENT='Wonder table With users inside'在声明的末尾。但是如何向触发器添加注释呢?

作为一种解决方法,您可以在触发器的主体中写入注释文本,例如-

CREATE TRIGGER trigger1
AFTER INSERT
ON table1
FOR EACH ROW
BEGIN
  -- 'Wonderful trigger with insert inside';
  INSERT INTO table2 VALUES(NEW.id);
END

不能将注释附加到触发器

但是,您可以在触发器主体中添加注释

如果在正文中键入注释,如
/**comment**/

您可以通过以下查询提取这些注释:

SELECT
  SUBSTRING(b.body, b.start, (b.eind - b.start)) as comment 
FROM (
  SELECT
    a.body 
    ,locate('/**',a.body) as start
    ,locate('**/',a.body) as eind
  FROM (
    SELECT t.ACTION_STATEMENT as body FROM information_schema.triggers t 
    WHERE t.TRIGGER_NAME like %aname% 
  ) a
) b

您可以这样在mysql触发器中放置注释-

CREATE TRIGGER trigger1
AFTER INSERT
ON table1
FOR EACH ROW
BEGIN
  /*!99999 This is my comment , i will ignore at run time. */
  INSERT INTO table2 VALUES(NEW.id);
END
为了防止“代码”被执行,您可以使用非常高的版本号,例如99999。

您也可以使用

#“你的评论”
它的工作原理似乎与
/“你的评论”


在其他语言中,例如:C、C++、PHP等

触发器没有这个选项。谢谢@ Dominik,但我认为这没有什么区别,因为MySQL没有与触发器相关的注释信息。没有问题。您的意思是没有将注释保存到MySQL注释的选项?是的,对于表,您可以向其元数据添加注释,但对于触发器,它不受支持。幸运的是,我使用的是MySQL workbench,我在触发器中的注释已在数据库之间成功传输,它们存在于触发器代码中:)