omportamento de índice exclusivo, coluna varchar e espaços em bran
Estou usando o Microsoft SQL Server 2008 R2 (com os service packs / correções mais recentes) e o agrupamento do banco de dados é SQL_Latin1_General_CP1_CI_A
O seguinte código:
SET ANSI_PADDING ON;
GO
CREATE TABLE Test (
Code VARCHAR(16) NULL
);
CREATE UNIQUE INDEX UniqueIndex
ON Test(Code);
INSERT INTO Test VALUES ('sample');
INSERT INTO Test VALUES ('sample ');
SELECT '>' + Code + '<' FROM Test WHERE Code = 'sample ';
GO
produz os seguintes resultados:
(1 linha (s) afetada)
Msg 2601, Nível 14, Estado 1, Linha 8
Não é possível inserir linha de chave duplicada no objeto 'dbo.Test' com o índice exclusivo 'UniqueIndex'. O valor da chave duplicada é (amostra).
A instrução foi encerrada
‐‐‐‐‐‐‐‐‐‐‐
> amostra <
(1 linha (s) afetada)
As minhas perguntas são:
Presumo que o índice não possa armazenar espaços à direita. Alguém pode me indicar documentação oficial que especifica / define esse comportamento? Existe uma configuração para alterar esse comportamento, ou seja, fazê-lo reconhecer 'amostra' e 'amostra' como dois valores diferentes (que são, a propósito) para que ambos possam estar no índicPor que diabos o SELECT está retornando uma linha? O SQL Server deve estar fazendo algo realmente engraçado / inteligente com os espaços na cláusula WHERE, porque se eu remover a exclusividade do índice, os dois INSERTs serão executados OK e o SELECT retornará duas linhas!Qualquer ajuda / ponteiro na direção certa seria apreciada. Obrigado