Функция SQL Server CHECKSUM_AGG()

В этом руководстве вы узнаете, как использовать функцию SQL Server CHECKSUM_AGG() для обнаружения изменений данных в столбце.

Введение в функцию SQL Server CHECKSUM_AGG()

Функция CHECKSUM_AGG() — это агрегатная функция, которая возвращает контрольную сумму значений в наборе.

Ниже показан синтаксис функции CHECKSUM_AGG():

CHECKSUM_AGG( [ ALL | DISTINCT ] expression)  

В этом синтаксисе:

  • ALL указывает функции возвращать контрольную сумму всех значений, включая дубликаты.
  • DISTINCT заставляет функцию вычислять контрольную сумму различных значений.
  • выражение — целочисленное выражение. Функция не принимает подзапросы или агрегатные функции.

Функция CHECKSUM_AGG() игнорирует нулевые значения.

Из-за алгоритма хеширования функция CHECKSUM_AGG() может возвращать одно и то же значение с разными входными данными. Поэтому вам следует использовать эту функцию, когда ваше приложение может допустить случайную потерю изменения.

Пример функции SQL Server CHECKSUM_AGG()

Следующий оператор создает новую таблицу с именем sales.inventory с данными, полученными из таблицы production.stocks в образце базы данных. Новая таблица хранит продукты и их количества:

SELECT
    product_id, 
    SUM(quantity) quantity
INTO 
    sales.inventory
FROM
    production.stocks
GROUP BY 
    product_id;

Следующий оператор использует функцию CHECKSUM_AGG() для получения совокупной контрольной суммы столбца количества:

SELECT 
    CHECKSUM_AGG(quantity) qty_checksum_agg
FROM
    sales.inventory;

Выход:

qty_checksum_agg
----------------
29
(1 row affected)

Давайте изменим данные в таблице sales.inventory:

UPDATE 
    sales.inventory
SET
    quantity = 10
WHERE
    product_id = 1;

И применим функцию CHECKSUM_AGG() к столбцу количества:

SELECT 
    CHECKSUM_AGG(quantity) qty_checksum_agg
FROM
    sales.inventory;

Выход:

qty_checksum_agg
----------------
32
(1 row affected)

Вывод показывает результат изменений CHECKSUM_AGG(). Это означает, что данные в столбце количества были изменены с момента последнего расчета контрольной суммы.

Краткое содержание

  • Используйте функцию CHECKSUM_AGG() для обнаружения изменений данных в столбце.
Мирослав С.

Автор статей, ИБ-специалист