生成随机数以自动增量

时间:2017-10-17 09:59:14

标签: sql sql-server triggers increment

我有一个数字格式,如下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都是相同的 - 抱歉格式化

2 个答案:

答案 0 :(得分: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 :(得分:0)

您可以尝试下一个代码:

 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

我计算表上的行并使用该值来获得增量,视为