Que tal,
Como puedo hacer para "activar" "desactivar" un trigger específico.
Lo he hecho en SQL pero no encuentro la solución para MySQL. Gracias!!
| ||||
Respuesta: Trigger enable disable Te explico un poco mejor. Tengo Tabla1 y Tabla2. Mismos campos en ambas, y se deben mantener actualizadas una con otra. Lo que necesito es que el disparase el trigger de la Tabla1, el trigger de la Tabla2 queda inactivo o deshabilitado hasta que el primero termine. De lo contrario me dara un error ya que se dispararan ambos en simultaneo. Hay algo que pueda utilizar, crear alguna funcion o algo asi que deshabilite y otra que habilite los triggers de una tabla? |
| ||||
Respuesta: Trigger enable disable Ya te dije, no existe forma de evitar el funcionamiento de un trigger como no sea dropearlo. Lo que deberías hacer posiblemente sea encapsular todo en un SP.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| ||||
Respuesta: Trigger enable disable Cita: UN Stored Procedure es una cosa, y un Trigger otra cosa totalmente diferente. No entremezcles conceptos. un sp con trigger Si bien ambas son rutinas, un sp es una rutina almacenada que puede o no tener parámetros de entrada, puede tener o no salidas, y siempre realiza una tarea sí y sólo si se la invoca formalmente. UN trigger es una rutina almacenada que depende de una tabla, y se ejecuta siempre y en forma automática, ante un evento DML de tabla (INSERT, UPDATE, DELETE), y siempre tiene parámetros de entrada, los cuales son exclusivamente datos de un registro de la misma tabla. Ambas cosas pertenecen a contextos y entornos de existencia diferentes. Aclarado esto, la pregunta: ¿Has tenido alguna práctica en stored prcedures en SQL Server? Es importante para saber cuánto conoces, y cuanto hay que explicarte. https://dev.mysql.com/doc/refman/5.7...procedure.html
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| ||||
Respuesta: Trigger enable disable En SQL he trabajado con sp, pero cosas sencillas, con tablas de la base de datos. Pero no logro solucionar este probelam que me surjio. En SQL es mas sencillo, ya que creo un trigger en la tabla1, y otro en la tabla2. Cuando se ejecuta uno, primero deshabilita el segundo trigger, luego ejecuta el evento correspondiente en la tabla, y luego habilita el segundo trigger. Es muy sencillo, pero al no tener mysql esta opción, no se me ocurre como hacerlo con un sp. Por eso esperaba que me ayudaras un poco, no solo con la idea sino con la sintaxis, ya que no encuentro algun ejemplo en la web. Gracias!! |
| ||||
Respuesta: Trigger enable disable Entendamos que lo que necesitas no es "ejemplos" de un SP que haga lo que necesitas hacer, sino razonar lo que debe hacer el SP para cumplir la tarea requerida. Y para eso sólo necesitas saber hacer SP... en cualquier DBMS. Cambiar de DBMS para hacer un trigger es un tema exclusivamente de sintaxis aplicable a cada uno (T-SQL, PL/SQL, etc. son la forma en que se programa en cada uno). Y con ese fin simplemente se siguen los manuales de referencia. Dicho esto, haremos una nueva salvedad, para que podamos hablar con propiedad: Cita: SQL es el lenguaje de consultas, NO EL DBMS. Por favor, no es lo mismo y debemos ser claros. En SQL he trabajado con sp, Cuando dices "SQL" estás hablando de tener experiencia en T-SQL, que es el lenguaje procedural usado por el MS SQL Server. Aclarado el punto, vamos a razonar lo que necesitas. Tu SP debe hacer: 1) Recibir un X conjunto de datos, que pueden ser todos, o algunos nulos. Es posible que convenga recibir un parámetro adicional para determinar si es una acción de alta o modificación, uy una diferente para la baja. 2) Verificar si en la tabla de la base donde corre el SP se encuentra un registro coincidente. 3) Si no existe, realizar un INSERT con los datos recibidos. 4) Si existe, realizar un UPDATE para los datos recibidos. 5) En ambos casos, se debe replicar la tarea en la segunda base. 6) Si se recibió DELETE como operación, se procede a dar de baja en ambas bases con un DELETE simple, dado que no genera fallos si no lo encuentra. 7) En todos los casos se devuelve la cantidad de registros afectados (valor obtenido por función propia de MySQL ROW_COUNT()). Eso sería un ejemplo imaginario, por lo que NO tienes que tomarlo como base, sólo como INSPIRACION o referencia. Es decir, NO hagas un Copy+Paste de esto...
Código MySQL:
Ver original
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
Etiquetas: |