BINARY_CHECKSUM (Transact-SQL)
Restituisce il valore di checksum binario calcolato su una riga di una tabella o su un elenco di espressioni. È possibile utilizzare la funzione BINARY_CHECKSUM per rilevare le modifiche apportate a una riga di una tabella.
Sintassi
BINARY_CHECKSUM ( * | expression [ ,...n ] )
Argomenti
*
Specifica che il calcolo viene eseguito su tutte le colonne della tabella. Nel calcolo eseguito da BINARY_CHECKSUM vengono ignorate le colonne con tipi di dati non confrontabili. I tipi di dati non confrontabili sono text, ntext, image, cursor, xml e i tipi CLR (Common Language Runtime) non confrontabili definiti dall'utente.expression
Espressione di qualsiasi tipo. Durante il calcolo eseguito da BINARY_CHECKSUM le espressioni di tipi di dati non confrontabili vengono ignorate.
Osservazioni
L'esecuzione della funzione BINARY_CHECKSUM(*) su una riga di una tabella restituisce sempre lo stesso valore, a meno che la riga non venga successivamente modificata. Viene restituito un valore diverso per gran parte delle modifiche, ma non tutte, apportate a una riga. La funzione BINARY_CHECKSUM(*) consente pertanto di rilevare la maggior parte delle modifiche di riga.
Quando si esegue BINARY_CHECKSUM su un elenco di espressioni, potrebbe venire restituito lo stesso valore per l'elenco specificato. Se la funzione viene eseguita su due elenchi di espressioni, viene restituito lo stesso valore se agli elementi corrispondenti dei due elenchi sono associati lo stesso tipo di dati e la stessa rappresentazione di byte. Per questa definizione, si presume che ai valori Null di un determinato tipo sia associata la stessa rappresentazione di byte.
BINARY_CHECKSUM e CHECKSUM sono funzioni simili. Consentono infatti di calcolare un valore di checksum in un elenco di espressioni, il cui ordine determina il valore restituito. L'ordine delle colonne utilizzato per BINARY_CHECKSUM(*) corrisponde all'ordine delle colonne specificato nella definizione di tabella o vista. Sono comprese le colonne calcolate.
Le funzioni CHECKSUM e BINARY_CHECKSUM possono restituire valori diversi solo per i tipi di dati stringa, in cui a seconda delle impostazioni locali le stringhe con rappresentazione diversa possono risultare uguali. I tipi di dati stringa sono char, varchar, nchar, nvarchar o sql_variant (se il tipo di base di sql_variant è un tipo di dati stringa). I valori BINARY_CHECKSUM per le stringhe "McCavity" e "Mccavity", ad esempio, sono diversi. In un server in cui la distinzione tra maiuscole e minuscole è irrilevante, invece, la funzione CHECKSUM restituisce per queste stringhe gli stessi valori di checksum. I valori di CHECKSUM non devono essere confrontati con i valori di BINARY_CHECKSUM.
Esempi
Nell'esempio seguente la funzione BINARY_CHECKSUM viene utilizzata per rilevare le modifiche in una riga di una tabella.
USE AdventureWorks2008R2;
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
Vedere anche