我遇到的情况是,多个用户可能会多次调用一个查询,但我只希望它针对数据库运行一次(每周)。环境是 SQL Server Express,因此不能选择通过 SQL Server 代理进行调度。它需要与 2005 兼容。我也想让它尽可能轻量,所以我寻求建议。理想情况下是数据库范围内声明的变量 - 但我不认为 SQL Server 支持这样的野兽?谢谢
最佳答案
尝试这样的事情:
IF NOT EXISTS ( -- Check if you have the current week content
SELECT *
FROM WeeklyTable
WHERE
DATEPART(YEAR, DateCr) = DATEPART(YEAR, GETDATE())
AND
DATEPART(WEEK, DateCr) = DATEPART(WEEK, GETDATE())
)
BEGIN
-- delete old content
DELETE WeeklyTable
-- insert new content
INSERT INTO WeeklyTable (MyID, MyField1, ... , MyFieldN, DateCr)
SELECT
MyID, MyField1, MyField2, GETDATE()
FROM MainTable
END
您可以为 WeeklyTable 创建所需的索引。
关于sql-server - 尽管被多次调用,但在 SQL Server 中执行一次查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8457340/