Declaración ALTER TRIGGER (disparador básico)
La sentencia ALTER TRIGGER (basic) cambia la descripción de un disparador básico en el servidor actual.
FL 500 Para una descripción de las diferencias entre los desencadenantes básicos y avanzados, consulte Desencadenantes.
Invocación para ALTER TRIGGER (básico)
Esta sentencia puede incorporarse en un programa de aplicación o emitirse de forma interactiva. Es una instrucción ejecutable que puede prepararse dinámicamente solo si el comportamiento DYNAMICRULES RUN está en vigor. Para obtener más información, consulte ID de autorización y SQL dinámico.
Autorización para ALTERAR DISPARADOR (básico)
El conjunto de privilegios que se define a continuación debe incluir al menos uno de los siguientes:
- Propiedad del gatillo
- El privilegio ALTERIN en el esquema
- Autorización SYSADM
- Autorización SYSCTRL
- DBADM del sistema
Autoridad de instalación SYSOPR (cuando el SQLID actual del proceso está configurado como SYSINSTL)
El ID de autorización que se corresponde con el nombre del esquema tiene implícito el privilegio ALTERIN sobre el esquema.
Conjunto de privilegios:
Si la sentencia está incrustada en un programa de aplicación, el conjunto de privilegios es el conjunto de privilegios que posee el propietario del plan o paquete. Si el estado se prepara dinámicamente, el conjunto de privilegios es el conjunto de privilegios que posee el ID de autorización SQL del proceso. El nombre de activación especificado puede incluir un nombre de esquema (un calificador). Sin embargo, si el nombre del esquema no es el mismo que uno de los ID de autorización del proceso, debe cumplirse una de las siguientes condiciones:
- El conjunto de privilegios incluye la autoridad SYSADM, la autoridad SYSCTRL o la autoridad DBADM del sistema.
- El ID de autorización del proceso tiene el privilegio ALTERIN en el esquema.
- Autorización SECADM
- Privilegio CREATE_SECURE_OBJECT

Sintaxis para ALTER TRIGGER (básico)
lista de opciones:

Descripción de ALTER TRIGGER (básico)
- nombre-activador
- Identifica el desencadenante que se va a cambiar.
El nombre, incluido el nombre implícito o explícito del esquema, debe existir en el servidor actual. El nombre debe identificar un desencadenante básico.
El desencadenante no debe ser ofuscado.
- SECURED o NOT SECURED
- Especifica que el activador debe cambiarse a seguro o no seguro. Cambiar un desencadenador entre SECURED (asegurado) y NOT SECURED (no asegurado) provoca una reasignación implícita del paquete del desencadenador. Si se encuentra un error durante la reasociación implícita del paquete de activación, la instrucción ALTER TRIGGER devuelve el error.
- SECURED
- Especifica que el activador se considera seguro.
SEGURO debe especificarse para un desencadenador si su tabla de sujetos utiliza control de acceso de filas o control de acceso de columnas. También se debe especificar SECURED para un disparador que se cree para una vista y una o más de las tablas subyacentes en la definición de la vista estén utilizando control de acceso de fila o control de acceso de columna.
- NOT SECURED
- Especifica que el activador no se considera seguro.
NO ASEGURADO no debe especificarse para un desencadenador cuya tabla de sujetos esté utilizando control de acceso de fila o control de acceso de columna. Tampoco debe especificarse NO SEGURO para un disparador creado para una vista y una o más de las tablas subyacentes en la definición de la vista utilicen control de acceso de filas o control de acceso de columnas.
Notas para ALTER TRIGGER (básico)
Cambiar un disparador existente en un disparador avanzado:
FL 500Para cambiar un disparo básico o un disparo definido antes de Db2 12 con nueva función activada en un disparo avanzado, utilice uno de los siguientes métodos:- emitir una sentencia DROP TRIGGER seguida de una sentencia CREATE TRIGGER (avanzada), especificando la definición deseada del disparador avanzado para redefinirlo. El activador existente se elimina de forma efectiva y se define un nuevo activador avanzado. Esto afecta al orden de activación del disparador para la tabla en la que se define el disparador.
- emitir una declaración CREATE TRIGGER (avanzada) con la cláusula OR REPLACE y especificar la definición deseada del disparador avanzado. El activador existente se elimina de forma efectiva y se define un nuevo activador avanzado. Esto afecta al orden de activación del disparador para la tabla en la que se define el disparador.

Los cambios son inmediatos:
Cualquier cambio que la sentencia ALTER TRIGGER provoque en la definición de un trigger tendrá efecto inmediato. La definición modificada se utilizará la próxima vez que se active el disparador.
- Cambiar un activador de NO SEGURO a SEGURO:
- Por lo general, el administrador de seguridad examinará los datos a los que se accede mediante un desencadenador, se asegurará de que sean seguros y concederá el privilegio CREATE_SECURE_OBJECT al propietario del desencadenador. Después de que el desencadenador se cambie a SECURED, el administrador de seguridad revocará el privilegio CREATE_SECURE_OBJECT al propietario del desencadenador.
El desencadenante se considera seguro después de que se ejecute la instrucción ALTER TRIGGER. Db2 trata el atributo SECURED como una afirmación que declara que el usuario ha establecido un procedimiento de auditoría para todas las actividades en el cuerpo del desencadenador. Si un activador seguro hace referencia a funciones definidas por el usuario, Db2 asume que esas funciones son seguras sin validación. Si esas funciones pueden acceder a datos confidenciales, el usuario con autoridad SECADM debe asegurarse de que esas funciones tengan permiso para acceder a esos datos y de que exista un procedimiento de auditoría para todas las versiones de esas funciones, y de que todas las declaraciones ALTER FUNCTION posteriores o los cambios en paquetes externos sean revisados por este proceso de auditoría.
Un desencadenador debe ser seguro si su tabla de sujetos utiliza control de acceso de filas o control de acceso de columnas. También se debe especificar SECURED para un disparador que se cree para una vista y una o más de las tablas subyacentes en la definición de la vista estén utilizando control de acceso de fila o control de acceso de columna.
- Cambiar un activador de SEGURO a NO SEGURO:
- La sentencia ALTER TRIGGER devuelve un error si la tabla de asunto del disparador está utilizando control de acceso de fila o control de acceso de columna, o si el disparador es para una vista y una o más de las tablas subyacentes en la definición de vista están utilizando control de acceso de fila o control de acceso de columna.
Alteración de activadores ofuscados:
Los activadores ofuscados no pueden alterarse de ninguna manera.
- Control de acceso de filas y control de acceso de columnas que no se aplica a las variables de transición y las tablas de transición:
- Si se aplica el control de acceso de filas o el control de acceso de columnas para la tabla de sujetos del desencadenador, los permisos de filas y las máscaras de columnas no se aplican a los valores iniciales de las variables de transición y las tablas de transición. El control de acceso de fila y el control de acceso de columna se aplican a la tabla de activación, pero se ignoran para las variables de transición y las tablas de transición a las que se hace referencia en el cuerpo del cuerpo del activador o que se pasan como argumentos a funciones definidas por el usuario que se invocan en el cuerpo del activador. Para garantizar que no haya problemas de seguridad en las sentencias SQL que acceden a datos confidenciales en variables de transición y tablas de transición en la acción desencadenante, el desencadenante debe cambiarse para utilizar la opción SECURED. Si un desencadenador no es seguro, el control de acceso de filas y el control de acceso de columnas no se pueden aplicar a la tabla desencadenante.
Ejemplos para ALTER TRIGGER (básico)
Ejemplo 1 : Cambiar la definición de activador (trigger) de " TRIGGER1 " a "secured":
ALTER TRIGGER TRIGGER1
SECURED; 