我一直在为我的SQL数据库开发一个触发器。我的触发器不会工作
的表格:
TABLE1:ID(INT,自动增量),值1(VARCHAR),值2(VARCHAR),计数(INT)
TABLE1_History:ID(从TABLE1.ID独立,INT,自动增量),相同的列TABLE1但具有添加的时间戳(SMALLDATETIME)
的代码:
SELECT @@ROWCOUNT FROM TABLE1_History, INSERTED
WHERE TABLE1_History.value1 LIKE INSERTED.value1
AND TABLE1_History.value2 LIKE INSERTED.value2
AND DATEDIFF(HOUR,TABLE1_History."TimeStamp", GETDATE()) > 24;
IF(@@ROWCOUNT = 0)
BEGIN
INSERT INTO TABLE1_History(value1, value2, count, "TimeStamp")
SELECT value1, value2, count, GETDATE() FROM INSERTED
END
ELSE
BEGIN
UPDATE TABLE1_History
SET "TimeStamp" = GETDATE(), count = count+(SELECT count FROM INSERTED)
WHERE TABLE1_History.value1 LIKE (SELECT value1 FROM INSERTED)
AND TABLE1_History.value2 LIKE (SELECT value2 FROM INSERTED)
AND DATEDIFF(HOUR,TABLE1_History."TimeStamp", GETDATE()) < 24;
END
END
什么是应该发生的:
当我添加一个新行TABLE1我想TABLE1_History更新。
TABLE1_History ONLY中添加新行如果行已经用相同的值1 &值2作为新行和存在,如果它已经24h以上,因为加入该行。
否则,计数器增加。
会发生什么:
截至目前:TABLE1_History得到每一次更新。如果值匹配或不匹配,则无关紧要。
在我决定让TABLE1_History.ID与TABLE1.ID分开之前,它似乎工作正常。
SQL-Server?请添加标签。 –
你的意思是在stackoverflow标签?在那种情况下,是固定的。 –