【问题标题】:Create trigger to increase value when found duplicate发现重复时创建触发器以增加值
【发布时间】:2014-10-13 03:18:05
【问题描述】:

当发现新值重复时,我需要触发增加第二位。

例如,我有一个 10 位数的唯一字段。我想当有人插入相同的数字时,它会增加左第二位数字,例如 0100012345。我该怎么做?谢谢。

名字姓氏代码 Houssam Salim 0100012345 为 0200012345

【问题讨论】:

    标签: sql-server-2008 triggers duplicates alter


    【解决方案1】:

    试试这个

    我找到了一个解决方案,而不是触发

    '/* 创建表 [Employee1] ( [id] VARCHAR(20) 主键, [名称] VARCHAR(50) )

    创建触发器 AutoIncrement_Trigger 开 [员工 1] 而不是插入 作为 开始 声明@ch CHAR 声明@num INT

      IF EXISTS (SELECT 1
                 FROM   Employee1 e
                        JOIN inserted i
                          ON i.id = e.id)
        BEGIN
            SET @num=(SELECT max(CONVERT(INT, substring(e.id, 1, 2))) + 1
                      FROM   employee1 e
                             JOIN inserted i
                               ON substring(e.id, 3, len(e.id)) = substring(i.id, 3, len(i.id)))
    
            INSERT INTO [Employee1]
                        (id,
                         name)
            SELECT '0' + CONVERT(VARCHAR(10), @num)
                   + substring(i.id, 3, len(i.id)),
                   e.name
            FROM   Employee1 e
                   JOIN inserted i
                     ON i.id = e.id
        END
      ELSE
        BEGIN
            INSERT INTO [Employee1]
                        (id,
                         name)
            SELECT inserted.id,
                   inserted.name
            FROM   inserted
        END
    

    结束 */ 插入 [Employee1] 值('0100012345', '约翰')

    选择 * FROM [员工1]

    插入 [Employee1] 值('0100012345', '约翰')

    选择 * FROM [员工1]

    '

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      • 1970-01-01
      • 2015-04-23
      • 2015-10-01
      • 1970-01-01
      相关资源
      最近更新 更多