Строчные ограничения - Sql Server - PullRequest
3 голосов
/ 12 марта 2009

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

Спасибо!

Ответы [ 3 ]

5 голосов
/ 12 марта 2009

звучит так, как будто вы ищете вычисляемый столбец. Что-то вроде:

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

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

1 голос
/ 12 марта 2009

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

1 голос
/ 12 марта 2009

Обычный способ сделать это - использовать триггер, который срабатывает при вставке и обновлении.

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)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...