每天都会有一些行插入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
谢谢!
答案 0 :(得分:0)
这是因为您正在截断触发器中的T_FUTURE表。 每次触发触发器时,它将首先截断T_FUTURE表,然后将新记录插入此表。