我有一张桌子" OrderInfo"有4列:ID,Driver,Date,Increment_ID。
列" Increment_ID"是从1到9999的身份。 专栏" ID"基于列的值" Increment_ID"。(例如:M-ddMMyy-0001)。
就像你可以看到列" ID"," ddMMyy"的格式值是日,月和年。 例如:今天是25/01/2018所以我的专栏的价值" ID"是:M-251218-0001。
如果它的值达到9999,我已经创建了一个重置标识列(Increment_ID)的触发器。但是出了点问题,除非我删除了那个触发器,否则我无法插入新行。这是我的触发器:
CREATE TRIGGER trg_OrderInfo_ResetIdentityColumn ON OrderInfo
FOR INSERT
AS
BEGIN
DECLARE @max_increment_ID int = (SELECT MAX(od.Increment_ID) FROM OrderInfo od inner join inserted i on i.Increment_ID = od.Increment_ID )
IF(@max_increment_ID is not null and @max_increment_ID=9999)
DBCC CHECKIDENT ('OrderInfo',RESEED,0)
END
确保防止重复的主键" ID"我为" Increment_ID"选择了最大值。是9999.实际上我每天只有7000行。
我将非常感谢大家的帮助。谢谢!
答案 0 :(得分:1)
如果您只是需要确保ID是唯一的,可以将[data]用作一个条件
if Not Exist(select 1 FROM OrderInfo where [date]=getdate())
DBCC CHECKIDENT ('OrderInfo',RESEED,0)