2009-10-15 3 views
1

Возможно ли изменить определение таблицы для автоматической подгонки записей всех конечных пробелов при их вводе?Автозаполнение записей в базе данных?

Или это будет более эффективно/проще/обычно выполняется в коде befeore, представляющем записи?

ответ

7

Если вы работаете в SQL Server, вы можете сделать это автоматически, но вы действительно должны это делать, только если вы уверены и с должным учетом. ANSI_PADDING принимает решение в SQL относительно того, будет ли он обрезать конечные пробелы вводимого значения. Этот параметр применяется во время создания таблицы и не изменяется после этого, и настройка будет работать для varchar, но не работает для nvarchar.

Тестовый скрипт, чтобы показать различие заключается в следующем:

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 

На первой таблице возвращается длина данных в виде 10, так как пространства были вставлены, на втором примере они подстриженной на вставке.

Я лично предпочел бы, чтобы код контролировал то, что нужно было сделать, вместо того чтобы оставить его в настройке, но я включил примеры, чтобы показать, что это можно сделать на уровне БД, если это необходимо.

+0

Спасибо, я думаю, что, вероятно, я просто сделаю это в коде, но мне было любопытно/интересно узнать, можно ли это сделать проще или эффективнее другим способом. – 2009-10-15 09:30:59

2

Возможно, вы можете использовать trigger - в зависимости от того, какое программное обеспечение базы данных вы используете.

0

Вы можете использовать Trigger INSTEAD OF INSERT Section. ВМЕСТО ВСТАВКИ, вы можете обрезать значение и попытаться вставить его. Если вы укажете поле как уникальный индекс, оно должно выдать исключение из-за двойного значения индекса.