2017-10-17 105 views
3

我公司拥有一批甲如下1500和记录的插入后,我想数量上升到1501生成随机数自动增量

这里是我的表:

CREATE TABLE QuoteTable2 
(
    QuoteID int IDENTITY (1,1) NOT NULL 
, QNumber varchar(1500), 

); 

这里是我的触发器:

create TRIGGER tr_no ON quotetable2 
    AFTER INSERT 
    AS 

    BEGIN 
     UPDATE QuoteTable2 
     SET QNumber = inserted.QNumber +1 
     FROM inserted 
     WHERE quotetable2.QuoteID = inserted.QuoteID; 
    END 
    GO 

我的结果总是下同号:

QuoteID   QNumber 
1    1501 
1    1501 

我该如何修改触发器每次增加1?本例中的quoteID和Qnumber都是一样的 - 用于格式化

+0

QuoteID值*将*有差距,在某些时候。 QNumber:你认为没有差距,或者它与QuoteID相同吗? – gbn

+0

想通了! – JR83

回答

3

要更新从插入值,这是1500的值不好意思,所以它始终是1501

您需要获取值从源表QuoteTable2不是从inserted

UPDATE q 
    SET q.QNumber = q.QNumber +1 
    FROM QuoteTable2 as q 
    INNER JOIN inserted AS i ON q.QuoteID = i.QuoteID; 

我建议来声明列作为IDENTITY柱代替,它会自动递增。

1

你可以尝试下面的代码:

ALTER TRIGGER tr_no ON quotetable2 
    AFTER INSERT 
    AS 

    BEGIN 
    DECLARE @COUNT INT = (SELECT COUNT(1) FROM quotetable2) 
     UPDATE QuoteTable2 
     SET QNumber = inserted.QNumber + @COUNT -1 
     FROM inserted 
     WHERE quotetable2.QuoteID = inserted.QuoteID; 
    END 
    GO 

我指望表中的行,并使用该值来获取增量,对于