Acerca de las definiciones de Clave siguiente

La funcionalidad Claves siguientes permite que las transacciones de ejecución larga obtengan un valor siguiente para una entrada de columna, con o sin prefijo y sin bloquear otros procesos que están haciendo lo mismo. Estos tipos de llamadas de procedimiento almacenadas se configuran usando el formulario Metadatos de columnas de esquema de aplicación, en el campo Generadores.

Cómo funcionan las definiciones de Clave siguiente:

El procedimiento de raíz almacenado para las llamadas de clave siguiente, tienen el siguiente aspecto:

EXEC @Severity = dbo.Next2SubKeySp 
   @TableName      = @TableName
 , @ColumnName   = @ColumnName
 , @Prefix                   = @Prefix
 , @KeyLength         = @KeyLength
 , @SubKey              = @SubKey
 , @Increment          = @Increment
 , @KeyVal               = @KeyVal OUTPUT
 , @Infobar                = @Infobar OUTPUT 

Por ejemplo: El código de aplicación puede tener una columna Número de orden de cliente, por ejemplo, que puede utilizar o no, un prefijo. Así que, un número de orden de cliente con un prefijo de TG puede ser TG00000109 y un número de orden de cliente sin prefijo puede ser 0000000547.

Si dos procesos, a continuación, llaman al código Next2SubKeySp para la tabla CustomerOrder y para la columna CoNum al mismo tiempo, solicitando la clave siguiente para el prefijo TG, obtendrán los dos valores siguientes de la tabla NextKeys (TG00000110 y TG00000111). No habrá ningún bloqueo y ambos valores se almacenarán en la tabla NextKeys.

Sincronizar los valores de clave siguiente requiere que el sistema vuelva a las tablas de base para resolver cuales son los valores altos actuales de cada prefijo. Aquí es donde las definiciones de clave siguiente entran en juego. Estas definiciones contienen los metadatos que indican qué tablas y columnas tienen asociaciones de clave siguiente.

Acerca de las especificaciones principal y secundaria

En algunos casos, puede tener una tabla de archivo que incluya las mismas asociaciones de clave siguiente que otra tabla. Por ejemplo, puede tener una tabla, denominada CustomerOrderHistory, que contenga los datos históricos que se han archivado previamente desde la tabla CustomerOrder. La tabla CustomerOrder, entonces, será considerada como la tabla "principal". La tabla CustomerOrderHistory, será considerada una tabla "secundaria" que también necesita ser revisada cuando se sincronice Claves siguientes, ya que ambas tablas pueden contener la máxima cantidad de valores clave actuales.

Acerca de las Subclaves

Las columnas de subclave permiten agrupar a Clave siguiente en función del valor de otra columna.

Por ejemplo, un InteractionID se puede almacenar en una tabla denominada DailyInteraction, según la columna de subclave DayOfInteraction. Lo deseable, en este caso, es que InteractionID se inicie en 1 y se incremente con cada entrada adicional, pero solo para un valor DayOfInteraction dado. Para ver el valor máximo actual para un día dado, a continuación, debería cambiar el valor de Subclave en la solicitud de Clave siguiente.

Tabla 1. Tabla DailyInteraction
DayOfInteraction InteractionID
04/07/2017 1
04/07/2017 2
04/07/2017 3
05/07/2017 1
05/07/2017 2

La sincronización de Clave siguiente, en este caso, miraría la tabla DailyInteraction y resolvería el InteractionID máximo actual de cada valor DayOfInteraction. En este ejemplo, habría dos conjuntos de valores: 04/07/2017, 3 y 05/07/2017, 2. Estos valores se insertarían en la tabla NextKeys para que el procesamiento de Clave siguiente se desarrollara correctamente para esa tabla y columna.

Acerca de la Tabla maestra y la Columna maestra

Las opciones de la Tabla maestra y de la Columna maestra se usan en un caso especializado solo de números enteros de procesamiento subclave. Las claves siguientes normalmente se basan en caracteres pero en ciertos casos se basan en números enteros con una columna Subclave definida en una tabla separada.

Por ejemplo, suponga que una tabla Diario tiene una columna BatchID y una columna Secuencia y la columna Secuencia está basada en números enteros. En este caso, debe definirse una tabla separada que contenga la lista de valores BatchID, que son valores subclave. Los datos subclave que no maestros siempre están basados en caracteres y los datos subclave maestros siempre se basan en números enteros.

Temas relacionados