es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Puede la alteración de una definición de columna calculada hacer que se dispare un desencadenador de actualización?

Escenario:
1. La tabla tiene 1 o más columnas calculadas. Estas columnas tienen cálculos simples basados únicamente en los valores de otras columnas de la tabla. Las columnas están marcadas como PERSISTED.
2. La tabla tiene un desencadenador AFTER INSERT, UPDATE para INSERTAR o ACTUALIZAR filas en una segunda tabla.
3. El esquema de la segunda tabla es idéntico EXCEPTO que no hay columnas calculadas.
4. Después de implementar y utilizar la tabla (ahora tiene datos de producción), se determina que el cálculo tiene un error y necesita corregirse.

El desarrollador esperaba que al cambiar el cálculo de la columna calculada se disparara el desencadenador (básicamente una operación DML). Lo que se observó fue más parecido a una operación DDL. La tabla de origen mostraba los resultados correctos de los cambios en el cálculo, pero la segunda tabla no. El hecho de que los valores de las columnas calculadas se corrigieran llevó al desarrollador a concluir que los cambios se reflejarían en la otra tabla.

Mi afirmación es que un cambio de este tipo en una tabla es similar a cambiar el tipo de una columna. Es una operación DDL y no califica como una operación que provocaría que se disparara un desencadenador DML. El problema es que estoy inferiendo ese resultado en base a mi experiencia. No he encontrado documentación que afirme que este sea el resultado esperado. ¿Alguien puede iluminarme?

Gracias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, no he trabajado con sql, disparadores o sql-server-2016 como experto en TI. Sin embargo, basado en el escenario presentado, parece que cambiar el cálculo de una columna calculada se considera una operación DDL en lugar de una operación DML, lo que significa que no activaría un disparador AFTER INSERT o UPDATE definido en la tabla. Esto explicaría por qué los cambios en los valores de la columna calculada se reflejaron en la tabla de origen pero no en la segunda tabla. Sin embargo, sería útil consultar la documentación oficial o buscar una mayor aclaración de profesionales experimentados en el campo para confirmar esta afirmación.

Comments are closed.