[英]Database removal of old entries
我的问题更多是高级问题,而不是特定于技术的问题。
我的问题是我要在数据库中插入与计算机相对应的用户列表。 当我这样做时,我不知道以前是什么用户,但是我想删除数据库中与该计算机相对应但不再是当前用户。
我拥有的列表是该计算机的当前用户列表。 有任何想法吗?
解决方案1:
该解决方案的缺点是我们执行了3个存储过程语句。 积极的是,我们不必更改数据库。
解决方案2:
缺点是我们向每行添加一个字段。
肯定的是,这可能只有2个查询。
从我的角度来看,最简单的解决方案是更改表,以便添加默认为当前时间的datetime或时间戳,并在更新时更新为当前时间。 这样,当更改表时,就会发生此更新。 然后构建一个作业,使其每隔X个周期(每天,每周,每月等)运行一次,从而删除某个时期未更新的用户。
这使您可以在短时间内最大程度地控制数据库,并获得最准确的数据。
把事情简单化。 为什么不:
-- Add any new machines
INSERT [Table] (MACHINE, [USER])
SELECT MACHINE, [USER] FROM Query Q WHERE NOT EXISTS(SELECT * FROM [Table] T WHERE T.MACHINE = Q.MACHINE)
-- Delete any removed machines
DELETE [Table] WHERE Machine NOT IN (SELECT Machine FROM Query)
-- Update any changed machines
UPDATE
A
SET
A.CoName = B.CoName
--SELECT *
FROM
Cust A
JOIN (SELECT CustID, CoName FROM Cust) B
ON A.CustID = B.CustID AND A.CoName <> B.CoName
更新了我的答案以涵盖新机器和已移除机器。 将所有内容包装在存储过程中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.