BINARY_CHECKSUM (Transact-SQL)
Retorna o valor binário da soma de verificação calculado em uma linha de tabela ou em uma lista de expressões. BINARY_CHECKSUM pode ser usado para detectar alterações em uma linha de uma tabela.
Convenções da sintaxe Transact-SQL
Sintaxe
BINARY_CHECKSUM ( * | expression [ ,...n ] )
Argumentos
*
Especifica que o cálculo é feito em todas as colunas da tabela. BINARY_CHECKSUM ignora colunas de tipos de dados não comparáveis em sua computação. Os tipos de dados não comparáveis incluem text, ntext, image, cursor, xml, e tipos definidos pelo usuário (CLR) no tempo de execução de linguagem comum.expression
É uma expressão de qualquer tipo. BINARY_CHECKSUM ignora expressões de tipos de dados não comparáveis em sua computação.
Comentários
BINARY_CHECKSUM(*), calculado em qualquer linha de uma tabela, retorna o mesmo valor enquanto a linha não for modificada subsequentemente. BINARY_CHECKSUM(*) retornará um valor diferente para a maioria, mas não todas, das alterações na linha e poderá ser usado para detectar modificações na linha.
BINARY_CHECKSUM pode ser aplicado sobre uma lista de expressões e retorna o mesmo valor para uma lista especificada. BINARY_CHECKSUM aplicado sobre duas listas de expressões retorna o mesmo valor se os elementos correspondentes das duas listas tiverem o mesmo tipo e representação de byte. Nessa definição, os valores nulos de um tipo especificado são considerados como possuidores da mesma representação de byte.
BINARY_CHECKSUM e CHECKSUM são funções semelhantes: Elas podem ser usadas para calcular um valor de soma em uma lista de expressões e a ordem das expressões afeta o valor resultante. A ordem de colunas usada em BINARY_CHECKSUM(*) é a ordem de colunas especificada na tabela ou definição de exibição. Esses incluem colunas computadas.
CHECKSUM e BINARY_CHECKSUM retornam valores diferentes para os tipos de dados de cadeia de caracteres, em que o local pode fazer com que as cadeias de caracteres com representação diferente sejam iguais. Os tipos de dados de cadeia de caracteres são char, varchar, nchar, nvarchar ou sql_variant (se o tipo básico de sql_variant for um tipo de dados de cadeia de caracteres). Por exemplo, os valores de BINARY_CHECKSUM para as cadeias de caracteres "McCavity" e "Mccavity" são diferentes. Em contraste, em um servidor que não faz distinção entre maiúsculas e minúsculas, CHECKSUM retorna os mesmos valores de soma para essas cadeias de caracteres. Os valores de CHECKSUM não devem ser comparados com valores de BINARY_CHECKSUM.
Exemplos
O exemplo a seguir usa BINARY_CHECKSUM para detectar alterações em uma linha da tabela.
USE AdventureWorks2012;
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