2012-07-17 45 views
10

mysql我可以创建一个触发器,然后显示有关它的信息是这样的:您可以在创建后修改现有的mysql触发器吗?

mysql> show triggers like 'fooTrigger'; 

此命令使输出看起来极像是一个SELECT语句,与显示匹配触发一排。是否有可能更新它向我显示的行上的一列?

例如,一列名为Statement,它定义触发器激活时发生的情况。是否有可能为fooTrigger更改Statement字段,以便触发器有所不同?或者我需要dropcreate的触发器?

+1

可能的重复http://stackoverflow.com/questions/717711/is-it-true-i-cant-edit-a-mysql-trigger-i-have-to-drop-it-and-create- a-new-one – qbantek 2012-07-17 16:23:11

+0

我想这些问题中的一个可能会被关闭,但我*在尝试提问之前尝试搜索这个答案,而我没有找到上面提到的问题。将其他问题的一些措辞加以修改或增加以使其更易于找到是否是一个好主意? – 2012-07-17 16:28:48

+0

嗯,http://meta.stackexchange.com/questions/32311/do-not-delete-duplicates,看起来像我们应该只是关闭这个,然后用户仍然能够找到他们的问题的答案,无论措辞。 – 2012-07-17 17:02:54

回答

16

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

文档:CREATE TRIGGERDROP TRIGGER

您也可以访问有关使用INFORMATION_SCHEMA表上的触发器:

SELECT * FROM INFORMATION_SCHEMA.TRIGGERS 

但是,因为这些表实际上是视图,你不能对他们使用UPDATE
这只是一种比使用SHOW TRIGGERS更方便的方式来访问和操作信息。

文档:INFORMATION_SCHEMA.TRIGGERS

0

您可能需要,在Windows操作系统上,Connector/Net Visual Studio Integration查看和编辑现有的数据库对象。限制是你只能在For each row ...循环内edit trigger机构。

否则只有选项之一是下降并重新创建触发器。
但是在放弃与触发器关联的表被锁定并且在重新创建触发器之后解锁并且解锁之前,确保在放弃触发器之前。

相关问题