En la mayoría de los casos, puede copiar tablas que tengan integridad referencial desde el origen hasta el destino mediante Teradata PT API, Teradata JDBC, Teradata ARC y Teradata DSA.
Una tabla tiene integridad referencial si alguna de sus columnas de clave externa (FK) hace referencia a columnas de clave principal (PK) en otra tabla. La integridad referencial ayuda a garantizar la integridad y la coherencia de los datos en las columnas de PK y FK.
integridad referencial | Ejemplo | Descripción |
---|---|---|
Estándar | FOREIGN KEY ( Name , Deptid ) REFERENCES db.employee_PK ( Name , Deptid )) |
Aplica la integridad referencial a nivel de fila. |
Lote | FOREIGN KEY ( Name , Deptid ) REFERENCES WITH CHECK OPTION db.employee_PK ( Name , Deptid )) |
Aplica la integridad referencial para una transacción implícita; es útil cuando una única sentencia inserta varias filas en una tabla. |
Mínima | FOREIGN KEY ( Name , Deptid ) REFERENCES WITH NO CHECK OPTION db.employee_PK ( Name , Deptid )) |
Indica explícitamente a Teradata Database que no incurra en una carga adicional del sistema aplicando la integridad referencial en la relación de PK-FK. |
Tabla de origen | Tabla de destino | Resultados de Data Mover |
---|---|---|
La definición de FK existe | La tabla no existe. | Copia la tabla de origen al destino con la definición de FK del origen. |
La definición de FK existe | No tiene ninguna definición de FK. | Copia la tabla de origen en el destino sin ninguna integridad referencial, por lo tanto, la tabla de destino no tiene ninguna definición de FK. |
FK definida para col1 y col2 | Se ha definido la FK para col3 y col4. | Copia la tabla de origen en el destino, pero la tabla de destino mantiene su definición original de FK (FK en col3 y col4). La tabla de destino no utiliza la definición de FK de la tabla de origen (FK en col1 y col2). |
- Si se copia una tabla principal en el destino, la tabla no podrá conservarse en el destino con una tabla secundaria que no se copie como parte del trabajo debido a una de las siguientes dos condiciones:
Condición Ejemplo Información del error La tabla secundaria tiene integridad referencial permanente en la tabla. Las tablas de origen A y B, donde A es el elemento principal de B y C. Se producirá un error cuando se copian las tablas de origen A y B, donde C contiene referencias permanentes en A en el destino, pero no se copia C. El trabajo se debe crear solo cuando se muevan A y C, debido a que la integridad referencial de B es mínima con respecto a A. Las tablas de destino A, B y C, donde A es la principal de B y C; la integridad referencial de B es mínima con respecto a A; y la integridad referencial de C es permanente con respecto a A. - Al copiar una tabla secundaria, solo se puede cambiar el nombre o la ubicación de la tabla principal si la tabla secundaria ya existe en la base de datos de destino o si la tabla principal existe en la misma base de datos del destino y del origen.
- Si la tabla no existe en el destino, se utilizará la definición de la tabla de origen para crear la tabla en el destino. Debido a que Teradata Database representa la clave principal como un índice único en una definición de tabla, la tabla de destino se crea con un índice único en lugar de con una clave principal. Las tablas secundarias pueden hacer referencia a tablas con un índice principal o secundario único.
- Si un trabajo copia la base de datos completa con Teradata ARC o Teradata DSA, y la base de datos tiene tablas con claves externas, las tablas de destino se crearán sin claves externas.
- Si las tablas de origen y de destino tienen diferentes claves externas, las claves externas de la tabla de destino se mantienen después de la copia de la tabla.
- Solo se puede copiar una tabla secundaria sin copiar su tabla principal si la tabla secundaria ya existe en la base de datos de destino o si la tabla principal existe en la misma base de datos del destino y del origen.
- Cuando se mueven tablas, si una tabla principal tiene una clave de identidad de generación siempre y esa clave se utiliza como una clave externa para una tabla secundaria, solo se pueden mover las tablas con Teradata ARC o Teradata DSA. No se admiten copias parciales para este tipo de tabla de integridad referencial con ARC, DSA, TPT o JDBC.
Se considera que dos tablas tienen referencias circulares si una clave principal de la tabla principal (PT1) hace referencia a una clave externa de la tabla secundaria (CT1), y si una clave principal de CT1 hace referencia a una clave externa de PT1. Es decir, que existe una relación PK-FK mutua entre ambas tablas. Cuando se copian tablas de origen con referencias circulares, Data Mover solo puede copiarlas en el destino si no tienen ninguna relación PF-FK mutua; no debe existir ninguna referencia circular entre las tablas de destino. Si las tablas no existen en el destino cuando Data Mover intenta copiar las tablas de origen con referencias circulares, se producirá un error.