2009-10-15 6 views

Répondre

7

Si vous travaillez dans SQL Server, vous pouvez faire cette automatique, mais vous ne devez vraiment faire si vous êtes sûr et qu'elles soient dûment examinées. L'ANSI_PADDING décide en SQL si les espaces de fin d'une valeur sont insérés. Le paramètre est appliqué au moment de la création de la table et n'est pas modifié après, et le paramètre fonctionne pour varchar, mais ne fonctionne pas pour nvarchar.

Un script de test pour montrer la différence est la suivante:

set ansi_padding on 
create table foo (myID int identity, myString varchar(50)) 
insert into foo values ('abcd  ') 
select datalength(mystring) from foo 

drop table foo 
set ansi_padding off 
create table foo (myID int identity, myString varchar(50)) 
insert into foo values ('abcd  ') 
select datalength(mystring) from foo 

Sur la première table les déclarations de longueur des données 10 étant donné que les espaces ont été insérés, le deuxième exemple, ils sont parés à l'insertion.

Personnellement, je préfère le code de contrôle ce qu'il fallait pour faire au lieu de le laisser à la mise, mais j'inclus les exemples pour montrer qu'il peut être fait au niveau DB si nécessaire.

+0

Merci, je pense que je vais probablement juste le faire dans le code, mais était curieux/curieux de voir si cela pourrait être fait plus facile ou plus efficacement d'une autre manière. –

2

Vous pouvez éventuellement utiliser un trigger - en fonction de ce logiciel base de données que vous utilisez.

0

Vous pouvez utiliser Trigger INSTEAD OF INSERT Section. AU LIEU DE L'INSERTION, vous pouvez couper la valeur et essayer de l'insérer. Si vous spécifiez champ comme index unique, il doit générer une exception en raison de la valeur d'index en double.

Questions connexes