Cómo utilizar la función CHECKSUM_AGG en SQL Server

Checksum devuelve un valor para verificar la integridad de la entrada. Generalmente indica si el valor de entrada ha cambiado con el tiempo. Para que esto pueda ayudarnos a encontrar si un valor ha cambiado desde la última operación. Además, SQL Server incluye diferentes funciones CHECKSUM para verificar el cambio en un solo valor o grupo de valores.

CHECKSUM_AGG La función devuelve un valor de suma de comprobación para la columna de tipo INTEGER. Agrega todos los valores de la columna y calcula una suma de comprobación. En caso de que una fila cambie con el tiempo, la suma de comprobación cambia en consecuencia. Esto sugiere que el valor ha cambiado en una columna. Si el valor de la suma de comprobación se cambia desde la última comprobación.

Por ejemplo, la tabla Empleado tiene diez números de teléfono diferentes en la columna Contacto. Calculamos CHECKSUM_AGG y la suma de comprobación devolvió 230. Si alguien actualizó su número de teléfono y luego aplicando CHECKSUM_AGG devuelve 350. Indicando que cualquiera de los valores debe haber sido cambiado en la columna de Contacto.

Índice()

    Puntos para reflexionar: CHECKSUM_AGG

    1. Detecte cambios en la lista de valores / tabla calculando una suma de comprobación. Devuelve el valor INTEGER como salida.

    2. Esta función solo funciona con columnas de tipo INTEGER.

    3. Ignora NULL, por lo que no se considera al calcular la suma de comprobación.

    4. Esta función se puede utilizar con la cláusula OVER.

    5. Existe una pequeña probabilidad de que el valor de la suma de comprobación no cambie según la documentación de SQL Server. Asegúrese de utilizar esta función en un entorno de producción después de una prueba exhaustiva.

    Ejemplos de

    Exploremos la función CHECKSUM_AGG con los siguientes ejemplos.

    1.

    CHECKSUM_AGG - Cálculo de suma de comprobación simple

    En este ejemplo usando @Jugadores variable de tabla para almacenar el salario de los jugadores. Aplicando CHECKSUM_AGG función a la columna Salario. Devuelve un valor CHECKSUM como 55272. Esto puede ser diferente en su caso. Más tarde, se ejecuta una declaración de actualización para enmendar los salarios de uno de los jugadores. Repitiendo CHECKSUM_AGG la función devuelve un valor de suma de comprobación diferente 7282. Esto indica que una de las filas debe haber cambiado desde la última verificación. Tenga en cuenta que CHECKSUM_AGG no mostrará qué fila ha cambiado.

    DECLARE @Players TABLE
    (
        Salary        INT
       ,Name        VARCHAR(50)
    );
    
    INSERT INTO @Players
    SELECT *
    FROM (VALUES (52222, 'Roger'), (2333, 'Rafa'), (1113, 'Novak'), (4434, 'Jo')) Player (Salary, Name);
    
    SELECT CHECKSUM_AGG(Salary) as OriginalCheckSum  --Checksum Before Update
    FROM   @Players;
    
    UPDATE @Players
    SET    Salary = 100
    WHERE  Name = 'Roger';
    
    SELECT CHECKSUM_AGG(Salary) as AfterCheckSum --Checksum Changes
    FROM   @Players;
    
    OriginalCheckSum
    ----------------
    55272
    
    (1 row affected)
    
    AfterCheckSum
    -------------
    7282
    
    (1 row affected)
    

    2.

    CHECKSUM_AGG - Valores distintos CHECKSUM

    Aplicando la función CHECKSUM_AGG en distinto los valores enteros devuelven una suma de comprobación diferente. En este ejemplo, la función devuelve una suma de comprobación diferente para todos los valores y valores distintos. Indicando si alguno de los valores distintos ha cambiado desde la última verificación.

    USE tempdb;
    GO
    
    DECLARE @Players TABLE
    (
        Salary        INT
       ,Name        VARCHAR(50)
    );
    
    INSERT INTO @Players
    SELECT *
    FROM (VALUES (2333, 'Roger'), (2333, 'Rafa'), (1113, 'Novak'), (4434, 'Jo'), (1133, 'Andy')) Player (Salary, Name);
    
    SELECT CHECKSUM_AGG(Salary) as OriginalCheckSum  --Checksum Before Update
    FROM   @Players;
    
    SELECT CHECKSUM_AGG(Distinct Salary) as OriginalCheckSum  --Checksum Before Update
    FROM   @Players;
    
    OriginalCheckSum
    ----------------
    4454
    
    (1 row affected)
    
    OriginalCheckSum
    ----------------
    6267
    
    (1 row affected)
    

    3.

    CHECKSUM_AGG: funciona solo en tipos de datos enteros

    CHECKSUM_AGG solo acepta la columna de tipo Integer. La ejecución de esta función en otros tipos de datos produce el siguiente error.

    DECLARE @Test TABLE
    (
        Name VARCHAR(50)
    );
    
    INSERT INTO @Test
    SELECT 'Test' UNION SELECT 'Test2';
    
    SELECT CHECKSUM_AGG(Name) as CheckSumAgg
    FROM   @Test;
    

    Msg 8117, nivel 16, estado 1, línea 35
    El tipo de datos del operando varchar no es válido para el operador checksum_agg.

    Resumen

    Como resultado, la función CHECKSUM_AGG devuelve una suma de comprobación para la lista de valores enteros en una columna. Esto nos ayuda a detectar cambios en una columna o una tabla. SQL Server ofrece diferentes funciones de suma de comprobación para verificar la integridad de los valores. Si le gusta esta publicación, es posible que desee consultar las publicaciones de archivo de Tech-Recipes Database para leer más.

    Subir