В этом руководстве вы узнаете, как использовать функцию 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() для обнаружения изменений данных в столбце.