【发布时间】:2014-10-13 03:18:05
【问题描述】:
当发现新值重复时,我需要触发增加第二位。
例如,我有一个 10 位数的唯一字段。我想当有人插入相同的数字时,它会增加左第二位数字,例如 0100012345。我该怎么做?谢谢。
名字姓氏代码 Houssam Salim 0100012345 为 0200012345
【问题讨论】:
标签: sql-server-2008 triggers duplicates alter
当发现新值重复时,我需要触发增加第二位。
例如,我有一个 10 位数的唯一字段。我想当有人插入相同的数字时,它会增加左第二位数字,例如 0100012345。我该怎么做?谢谢。
名字姓氏代码 Houssam Salim 0100012345 为 0200012345
【问题讨论】:
标签: sql-server-2008 triggers duplicates alter
试试这个
我找到了一个解决方案,而不是触发
'/* 创建表 [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]
'
【讨论】: