问题 你可以在创建后修改现有的mysql触发器吗?


mysql 我可以创建一个触发器,然后显示有关它的信息,如下所示:

mysql> show triggers like 'fooTrigger';

此命令提供的输出看起来非常像select语句,其中一行显示匹配的触发器。是否可以更新它显示的行上的列?

例如,一列被命名 Statement,它定义了触发器激活时会发生什么。是否有可能改变 Statement 领域 fooTrigger 所以触发器做了不同的事情?或者我需要 drop 并重新create 触发?


8958
2017-07-17 15:34


起源

可能重复 stackoverflow.com/questions/717711/... - qbantek
我认为其中一个问题可能会被关闭,但我 没有 在提出问题之前尝试搜索这个答案,我没有找到上面链接的那个。更改或添加其他问题的措辞以使其更容易找到是一个好主意吗? - Cory Klein
嗯, meta.stackexchange.com/questions/32311/do-not-delete-duplicates,看起来我们应该关闭它,然后用户仍然能够找到他们的问题的答案,无论措辞如何。 - Cory Klein


答案:


从MySQL 5.5开始,您必须删除并重新创建触发器。
无法更新 Statement 列没有丢弃触发器。

文档: 创造触发器  DROP TRIGGER

您还可以使用INFORMATION_SCHEMA表访问有关触发器的信息:

SELECT * FROM INFORMATION_SCHEMA.TRIGGERS

但是,由于这些表实际上是视图,因此无法使用 UPDATE 在他们。
与使用SHOW TRIGGERS相比,它只是访问和操作信息的一种更方便的方式。

文档: INFORMATION_SCHEMA.TRIGGERS


16
2017-07-17 16:13





在Windows操作系统上,您可能需要 连接器/网络Visual Studio集成 查看和编辑现有数据库对象。限制是你只能 编辑触发器 身体内 For each row ... 循环。

否则只有选项1具有丢弃并重新创建触发器。
但是在删除与触发器关联的表被锁定的触发器之前,请确保
并在重新创建触发器后解锁。


0
2017-07-17 16:19