【问题标题】:Lowercase constraint - Sql Server小写约束 - Sql Server
【发布时间】:2009-03-12 01:10:31
【问题描述】:

我不确定这是否应该是一个约束,但我希望表的“用户名”列忽略执行插入或更新时设置的值,而是存储“ DisplayUserName”列转换为小写。如果“DisplayUserName”发生变化,“UserName”也应该更新为“DisplayUserName”降低。

谢谢!

【问题讨论】:

    标签: sql-server constraints


    【解决方案1】:

    听起来您正在寻找计算列。比如:

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

    这样,您将永远不必设置用户名,根据定义,它是 DisplayUserName 中的小写值。

    【讨论】:

      【解决方案2】:

      执行此操作的常用方法是使用在插入和更新时触发的触发器。

      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)
      

      只需根据您的具体业务规则进行调整,因为我认为我没有做对 =)

      【讨论】:

        【解决方案3】:

        您需要创建一个触发器来处理更新。

        【讨论】:

          猜你喜欢
          • 2011-04-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-06-17
          • 1970-01-01
          相关资源
          最近更新 更多