每天,一些行都会插入到 SQL Server 表 (T_PAST) 中。这些行将是过去(即 2013 年 8 月 1 日)的记录以及将来(即 2014 年 1 月 1 日)的记录。我想将过去的日期记录保留在表 (T_PAST) 中,但对于未来的日期记录,我想:1)从原始表中删除它们2)将它们插入到仅具有未来日期记录的新表中(T_FUTURE)
问题是,将来的日期记录可能会在列中进行更改,因此我宁愿截断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
谢谢!!
这是因为您要截断触发器中的T_FUTURE表。每次触发触发器时,它都会首先截断T_FUTURE表,然后向此表插入新记录。