0

每天,都会将一些行插入到 SQL Server 表 (T_PAST) 中。这些行将是过去(即 2013 年 8 月 1 日)的记录以及将来的记录(即 2014 年 1 月 1 日)。我想将过去的日期记录留在表中(T_PAST),但对于未来的日期记录,我想:1)从原始表中删除它们 2)将它们插入到只有未来日期记录的新表中( T_未来)

问题是,未来的日期记录可能会在列中发生变化,因此我宁愿截断 T_FUTURE 表并重新插入记录,而不是运行更新查询。

从正确的记录插入到 T_PAST 中,正确的记录从 T_PAST 中删除并且 T_FUTURE 表被截断的意义上,一切正常。我的问题是,当我插入多个未来日期记录时,只有最后一条记录显示在 T_FUTURE 表中,而不是全部。

ALTER TRIGGER [dbo].[trg_GetFuture]
ON [dbo].[T_PAST]
AFTER INSERT
AS

BEGIN
TRUNCATE TABLE dbo.T_FUTURE
END

BEGIN
INSERT INTO dbo.T_FUTURE
SELECT *
FROM INSERTED
WHERE DATE > GETDATE()
END

BEGIN
DELETE FROM dbo.T_PAST
WHERE DATE > GETDATE()
END

谢谢!!

4

1 回答 1

0

这是因为您正在截断触发器中的 T_FUTURE 表。每次触发触发器时,它都会首先截断 T_FUTURE 表,然后将新记录插入到该表中。

于 2013-10-07T04:07:02.257 回答