Adición o eliminación de claves externas
Una clave externa consiste en un campo de una tabla de base de datos que hace referencia a la clave principal de otra tabla. La clave externa se define como una restricción en la columna relacionada en la tabla de la base de datos.
Con la restricción de clave externa, el campo debe estar vacío o el valor debe apuntar a un valor de la clave principal en la tabla a la que se hace referencia. Por ejemplo, el campo SiteUID de un turno es una clave externa que hace referencia al UID de un sitio. Como resultado, el valor de SiteUID en un turno debe estar vacío o coincidir con el valor de UID existente de un sitio.
La restricción de clave externa también impide que se borren las filas de la tabla de base de datos a las que hacen referencia los campos de clave externa. Por ejemplo, si un turno tiene un valor de SiteUID de 5, como la restricción de clave externa del campo SiteUID hace referencia al valor de UID de un sitio, el sitio cuyo valor de UID es 5 no se puede borrar.
Adición de una clave externa
Procedimiento para añadir una clave externa a una tabla de base de datos:
1. Cree un nuevo bloque de creación que se extienda desde el bloque de creación de PTC que contiene el administrador de la entidad relacionada con la tabla de la base de datos. Estos administradores se especifican en la tabla DefaultGlobalManagerConfiguration de la página Configuración de PTC.Base.Manager. Por ejemplo, para añadir una clave externa a una orden de trabajo, navegue hasta la cosa PTC.JobOrderImpl.Manager.
2. Navegue hasta la cosa del administrador del nuevo bloque de creación.
3. En Servicios, sustituya el servicio GetDBInfo para la entidad a la que se está añadiendo la clave externa. Por ejemplo, para añadir una clave externa a la tabla de la base de datos para órdenes de trabajo, sustituya el servicio GetDBInfo en la cosa PTC.JobOrderImpl.Manager.
4. En el editor de scripts, desplácese hacia abajo hasta la entrada de la definición de datos a la que desea añadir la clave externa.
5. Añada una matriz foreignKeys para la definición de datos, con las siguientes propiedades:
◦ identifier: el nombre de la entidad en la base de datos. Si no se especifica, el sistema genera automáticamente el valor con el formato <nombre_tabla>_<nombre_de_la_columna>_fk. Si se especifica, el valor debe ser único tanto para los valores especificados como para los valores generados automáticamente. La longitud máxima del valor es la longitud máxima permitida por la base de datos para los identificadores.
◦ name: nombre del campo de la definición de datos actual para que sea una clave externa. El tipo base del campo de clave externa debe coincidir con el tipo base del campo de referencia. Por ejemplo, si el campo tomado como referencia tiene el tipo base STRING, el campo de clave externa también debe tener un tipo base STRING.
◦ referenceDataShapeName: definición de datos de la tabla de base de datos a la que se hace referencia.
◦ referenceFieldName: nombre del campo que contiene el valor al que se hace referencia.
◦ onDelete: el impacto en las instancias de la definición de datos actual cuando se borran instancias de la definición de datos de referencia.
◦ deleteReference: el impacto en las instancias de la definición de datos de referencia cuando se borran instancias de la definición de datos actual.
6. Pulse en Guardar para guardar los cambios realizados en el servicio.
7. Vaya a la cosa PTC.DBConnection.Manager.
Eliminación de una clave externa
Procedimiento para quitar una clave externa:
1. Cree un nuevo bloque de creación que se extienda desde el bloque de creación de PTC que contiene el administrador de la entidad relacionada con la tabla de la base de datos. Estos administradores se especifican en la tabla DefaultGlobalManagerConfiguration de la página Configuración de PTC.Base.Manager. Por ejemplo, para quitar una clave externa de una orden de trabajo, navegue hasta la cosa PTC.JobOrderImpl.Manager.
2. Navegue hasta la cosa de base de datos configurada para el sistema, por ejemplo, PTC.DBConnection.MSSQLDatabase.
3. En Servicios, ejecute el servicio RemoveForeignKey con las entradas siguientes:
◦ dataShapeName: definición de datos para la tabla de base de datos de la que se quita la restricción de clave externa.
◦ fieldName: campo de la definición de datos en el que se quita la restricción de clave externa.
◦ dbInfo: descripción JSON de la clave externa que se va a quitar. Se debe proporcionar la misma información de identifier (si existe), name, referenceDataShapeName y refereceFieldName que se especifica en el servicio GetDBInfo donde se define la clave externa. El servicio desestimará los valores de onDelete o deleteReference si se incluyen.
4. Pulse en Ejecutar.
5. En la cosa del administrador del bloque de creación que se ha creado en el paso 1, navegue hasta el servicio
GetDBInfo en el que se ha definido la clave externa y quite la definición de clave externa de los servicios. Si no se quita, la clave externa se volverá a añadir a la base de datos la próxima vez que
se ejecuten los servicios de sincronización.
Por ejemplo, para quitar una restricción de clave externa sin especificar identifier de un campo denominado WorkDefinitionUID en la definición de datos MyObject, especifique lo siguiente para los parámetros de entrada:
• dataShapeName—MyObject
• fieldName—WorkDefinitionUID
• dbInfo—
{
"name":"WorkDefinitionUID",
"referenceDataShapeName":"PTC.SCA.SCO.WorkDefinition",
"referenceFieldName":"UID"
}