BINARY_CHECKSUM (Transact-SQL)

Retourne la valeur de total de contrôle binaire calculée à partir d'une ligne d'une table ou d'une liste d'expressions. BINARY_CHECKSUM permet de détecter les modifications apportées à une ligne d'une table.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

BINARY_CHECKSUM ( * | expression [ ,...n ] ) 

Arguments

  • *
    Indique que le calcul englobe toutes les colonnes de la table. BINARY_CHECKSUM ignore les colonnes de types de données incomparables dans son calcul. Les types de données incomparables sont text, ntext, image, cursor, xml et les types CLR définis par l'utilisateur incomparables.

  • expression
    Tout type d'expression. BINARY_CHECKSUM ignore les expressions de types de données incomparables dans son calcul.

Notes

BINARY_CHECKSUM(*), calculé à partir de n'importe quelle ligne d'une table, retourne la même valeur tant que la ligne ne subit aucune modification. BINARY_CHECKSUM(*) retourne une valeur différente pour la plupart des modifications apportées à la ligne (mais pas pour toutes) et permet de détecter la plupart des modifications.

BINARY_CHECKSUM peut porter sur une liste d'expressions et retourne la même valeur pour une liste spécifiée. Lorsque la fonction BINARY_CHECKSUM porte sur deux listes d'expressions, elle retourne la même valeur si les éléments correspondants des deux listes sont de type et de représentation en octets identiques. Pour cette définition, les valeurs NULL d'un type spécifié sont considérées comme utilisant la même représentation en octets.

Les fonctions BINARY_CHECKSUM et CHECKSUM sont similaires : Elles peuvent être utilisées pour calculer une somme de contrôle dans une liste d'expressions, et l'ordre des expressions affecte la valeur résultante. L'ordre des colonnes utilisé pour BINARY_CHECKSUM(*) est celui spécifié dans la définition de la table ou de la vue, y compris les colonnes calculées.

CHECKSUM et BINARY_CHECKSUM retournent des valeurs différentes pour les types de données de chaînes de caractères. Avec les paramètres régionaux, des chaînes dont la représentation est différente peuvent apparaître comme étant équivalentes. Les types de données de chaîne sont char, varchar, nchar, nvarchar et sql_variant (si le type de base de sql_variant est un type de données de chaîne). Par exemple, les valeurs BINARY_CHECKSUM des chaînes « McCavity » et « Mccavity » sont différentes. Si CHECKSUM est utilisé sur un serveur qui ne distingue pas les majuscules des minuscules, les mêmes valeurs de checksum sont retournées pour ces chaînes. Les valeurs de CHECKSUM ne doivent pas être comparées à celles de BINARY_CHECKSUM.

Exemple

L'exemple suivant utilise BINARY_CHECKSUM pour détecter des modifications dans une ligne d'une table.

USE AdventureWorks;
GO
CREATE TABLE myTable (column1 int, column2 varchar(256));
GO
INSERT INTO myTable VALUES (1, 'test');
GO
SELECT BINARY_CHECKSUM(*) from myTable;
GO
UPDATE myTable set column2 = 'TEST';
GO
SELECT BINARY_CHECKSUM(*) from myTable;
GO