我有一个数字格式,如下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 :(得分: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
我计算表上的行并使用该值来获得增量,视为