17.10 - Acerca de la copia de desencadenadores - Teradata Data Mover

Teradata® Data Mover Guía del usuario

Product
Teradata Data Mover
Release Number
17.10
Release Date
Junio de 2021
Content Type
Guía del usuario
Publication ID
B035-4101-061K-ESN
Language
Español (España)

Al copiar un desencadenador de una base de datos de origen a una base de datos de destino, se debe especificar el atributo selection="included" de la etiqueta trigger al definir el desencadenador, como se muestra en el siguiente ejemplo de código.

<triggers>
  <trigger selection= "included">
	<database>west1000</database>
	<subject_table_database>west1000</subject_table_database>
	<table>employee</table>
	<name>RaiseTrig</name>
	<action_time enabled="NO">BEFORE</action_time> 
  </trigger>
</triggers>
Parámetros para el elemento desencadenador
Parámetro Valores
selection
  • Especifique "included" para copiar el desencadenador.
  • Especifique "unselected" para que el desencadenador no se copie.
database Nombre de base de datos en la cual reside el desencadenador.
subject_table_database Nombre de base de datos en la que reside la tabla que se asocia con el desencadenador.
table Nombre de la tabla que está asociada con el desencadenador.
name Nombre del desencadenador.
action_time
  • Especifique "BEFORE" para colocar el desencadenador en la tabla de destino antes de que esta se cargue. Esto se traduce en una acción de desencadenador para cada fila que se copia del origen.
  • Especifique "AFTER" para colocar el desencadenador en la tabla de destino después de cargarla. De este modo no se realizará ninguna acción de desencadenador para las filas que se copian.
enabled
  • Especifique "YES" para activar el desencadenador en el destino.
  • Especifique "NO" para desactivar el desencadenador en el destino.

El valor debe ser "YES" para activar el parámetro action_time. Si el valor es "NO", el parámetro action_time no será válido.

Para verificar si un desencadenador está habilitado o deshabilitado en el destino, se utiliza la consulta SELECT de dbc.TriggersX y se consulta la columna EnabledFlag.

Reglas y restricciones

  • Se producirá un error si se copia un desencadenador sin copiar los resultados de la tabla asociados.
  • Si el objeto que se está copiando no existe en la base de datos de destino, se crea. Si el objeto existe en la base de datos de destino, se sobrescribe, a menos que la propiedad overwrite_existing_objects se establezca como false. En ese caso, se producirá un error en el momento de la creación.
  • Al copiar una tabla que ya existe en el destino con desencadenadores asociados, se sobrescribe la tabla de destino y los desencadenadores se reemplazan en la tabla recién copiada.
  • Se producirá un error al intentar cambiar el nombre o reubicar una tabla asociada a los resultados copiados de un desencadenador o con referencia a estos.
  • Si el nombre del desencadenador en la definición del desencadenador no está completo, el desencadenador se creará en la base de datos que tiene el mismo nombre que la base de datos del desencadenador de origen.
  • Si los nombres de tabla en la definición del desencadenador no están completos, esas tablas deben existir en la base de datos que tiene el mismo nombre que la base de datos del desencadenador de origen para evitar errores.

Ejemplo

En este ejemplo, se crea un desencadenador en el equipo de origen sin nombres de objeto completos en la definición:
CREATE TRIGGER RaiseTrig
 AFTER INSERT ON Employee
 FOR EACH ROW
 ( INSERT INTO SalaryLog VALUES ('Hello','Hi',23, 43); );
En este caso, al copiar el desencadenador en el destino se crea el desencadenador en la base de datos cuyo nombre coincide con el de la base de datos del desencadenador de origen. Si las tablas de empleados y de registro de sueldos no existen, se producirá un error.