我一直在爲我的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標籤?在那種情況下,是固定的。 –