Esta pregunta es muy similar a SQL Server 2005: T-SQL to temporarily disable a triggerMSSQL: Desactivar desencadena por un INSERT
Sin embargo no quiero desactivar todos los disparadores y ni siquiera por un lote de comandos, pero sólo por un único inserto.
Tengo que lidiar con un sistema de tienda donde el autor original puso una lógica de aplicación en un disparador (¡mala idea!). Esa lógica de aplicación funciona bien siempre y cuando no intente insertar datos de otra manera que la "interfaz de administración" original. Mi trabajo es escribir una herramienta para "importar desde el sistema de etapas", así que tengo todos los datos listos. Cuando intento insertarlo, el disparador sobrescribe el Código de producto existente (¡no el ID numérico de IDENTIDAD!) Con el código generado. Para generar el Código, utiliza el ID autogenerado de una inserción en otra tabla, de modo que ni siquiera puedo trabajar con la @@ IDENTIDAD para encontrar la columna que acaba de insertar y ACTUALIZAR la fila insertada con el Código del producto real.
Cualquier forma que yo pueda para evitar un código incómodo (inserte algunos caracteres aleatorios en el nombre del producto y luego intente encontrar la fila con los caracteres aleatorios para actualizarlo).
Entonces: ¿Hay alguna manera de desactivar los activadores (incluso uno solo) para solo uno INSERTAR?
La publicación de Kristof tiene un par de soluciones que parecen ser capaces de resolver su problema, solo quería informarle en caso de que esté dispuesto a cambiar su respuesta aceptada a esa. – SqlRyan