2009-03-12 1 views
3

Я не уверен, что это должно быть ограничение или нет, но я хочу, чтобы столбец «UserName» таблицы игнорировал значение, установленное при выполнении вставки или обновления, сохранить значение столбца «DisplayUserName», преобразованное в нижний регистр. И если «DisplayUserName» изменено, «UserName» также нужно обновить, чтобы «DisplayUserName» было понижено.Ограничение нижнего регистра - сервер Sql

Спасибо!

ответ

1

Общим путем является использование триггера, который срабатывает при вставке и обновлении.

http://msdn.microsoft.com/en-us/magazine/cc164047.aspx

Код триггера должно быть что-то вроде этого:

CREATE TRIGGER updateDisplayName_trigger ON Users 
FOR INSERT, UPDATE 
AS 
IF UPDATE(UserName) 
UPDATE Users SET DisplayUserName = Lower(UserName) 

Просто настроить его на конкретного правила бизнеса, потому что я думаю, что я не получил это право =)

1

Вам понадобится создать триггер для обработки обновления.

5

похоже, что вы ищете вычисленный столбец. Что-то вроде:

CREATE TABLE [dbo].[SampleTable](
    [ID] [int] IDENTITY(1, 1) NOT NULL, 
    [DisplayUserName] [varchar](100) NOT NULL, 
    [UserName] AS (lower([DisplayUserName])) 
) ON [PRIMARY] 

Таким образом, вы никогда не должны установить UserName, то по определению нижнего регистра значение из DisplayUserName.