2012-07-17 11 views
10

En mysql que puede crear un disparador, y luego mostrar información acerca de esta manera:¿Se puede modificar un disparador mysql existente después de haber sido creado?

mysql> show triggers like 'fooTrigger'; 

Este comando da salida que se parece un montón, como una instrucción de selección, con una fila que muestra el gatillo juego. ¿Es posible actualizar una columna en la fila que me muestra?

Por ejemplo, una columna se llama Statement y define lo que sucede cuando se activa el activador. ¿Es posible cambiar el campo Statement por fooTrigger para que el activador haga algo diferente? ¿O necesito drop y volver a create el gatillo?

+1

posible duplicado de 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

+0

Creo que una de estas preguntas podría cerrarse, pero * traté * de buscar esta respuesta antes de hacer la pregunta, y no encontré la que estaba vinculada anteriormente. ¿Sería una buena idea cambiar o agregar algunas palabras a la otra pregunta para que sea más fácil de encontrar? –

+0

Hmmm, http://meta.stackexchange.com/questions/32311/do-not-delete-duplicates, parece que deberíamos simplemente cerrar esto, y los usuarios aún podrán encontrar la respuesta a su pregunta independientemente de fraseología. –

Respuesta

16

A partir de MySQL 5.5, debe soltar y volver a crear el desencadenador. No es posible actualizar la columna Statement sin soltar el gatillo.

Documentación: CREATE TRIGGERDROP TRIGGER

También puede acceder a información sobre los factores desencadenantes utilizando las tablas INFORMATION:

SELECT * FROM INFORMATION_SCHEMA.TRIGGERS 

Pero, ya que estas tablas son en realidad puntos de vista, no se puede utilizar UPDATE en ellos.
Es solo una forma más conveniente de acceder y manipular la información que usar SHOW TRIGGERS.

Documentación: INFORMATION_SCHEMA.TRIGGERS

0

Usted puede requerir, en sistemas operativos Windows, Connector/Net Visual Studio Integration para ver y editar objetos de base de datos existente. La limitación es que solo puede edit trigger cuerpo dentro del lazo For each row ....

De lo contrario, solo la opción uno tiene es soltar y volver a crear el desencadenador.
Pero asegúrese antes de soltar un disparador que la tabla asociada con un desencadenador está bloqueada y
y desbloqueada después de que el desencadenador se vuelva a crear.

Cuestiones relacionadas