2011-05-26 12 views
16

Estoy tratando de ejecutar una instrucción de inserción en la tabla X cada vez que selecciono cualquier registro de la tabla Y, de todos modos, ¿puedo lograr eso usando solo MYSQL? algo así como disparadores?¿puedo abrir un disparador en la instrucción select en mysql?

Gracias,

+2

La respuesta breve es ** No **. Los disparadores se activan con 'INSERT', 'UPDATE' o 'DELETE'. –

+0

bien ¿Alguna otra solución? –

+0

Actualizar cada fila en una selección causaría dolores de cabeza en el rendimiento para las operaciones masivas. Lo mejor es actualizar específicamente una marca de tiempo last_accessed para las operaciones en las que tiene sentido hacerlo. –

Respuesta

20

La respuesta corta es No. Los desencadenantes se activan con INSERT, UPDATE o DELETE.

Posible solución para esto (raro) senario:

  • primer lugar, escriba algunos procedimientos almacenados que haga lo SELECT s que desee en la tabla X.
  • Entonces, restringir todos los usuarios lo utilicen solamente estos procedimientos almacenados y no les permiten usar SELECT en la tabla X.
  • Luego modifique los procedimientos almacenados a también llame a un archivo almacenado procedimiento que realiza la acción que desea (INSERT o lo que sea).
4

Nop - no se puede disparar en SELECT - que tendrá que crear un procedimiento almacenado (o cualquier otro tipo de registro - como un archivo de registro o lo que sea) que implícitamente llamar a cualquier instrucción de consulta: más fácil si crea un contenedor que llama a su consulta, llama al registro y devuelve los resultados de la consulta.

Cuestiones relacionadas