我正在寻找从我们的公司表中的一个非常具体的记录子集的更改。我意识到更新触发器可以实现这一目标,但每天将被称为数千次。
虽然我在SQL方面相当精通,但T-SQL和Triggers在我的普通游乐场之外有些不足。我不想写一些会不断运行并完成很少成就的东西(或惹恼我们的DBA(。
似乎解决方案将是一种观点,只能拉出我感兴趣的行,然后基于此触发触发器。似乎那是"不好的形式",告诉我有一种更好的方法可以完成同一件事。
我希望使用触发器,因为我正在寻找可能会迅速重置的值的更改。(例如,它将更改为1,然后几个小时后更改为0(。
此触发器将在SQL Server Express 10.50.4000
上运行。我主要需要一个方向 - 不再需要特定的代码。
您无法在触发基本表行更改的视图上创建触发器。
这不是"不良形式"的问题,这是不可能的(视图上唯一允许的触发器是INSTEAD OF
触发器,它们不做您需要的事情(。
表触发器检查列是否已从0
更改为1
是否应该导致大量开销 - 尤其是每天仅调用几千次。
它应该调用UPDATE
函数以检查感兴趣的列是否已更改 - 如果不立即退出。否则,它应该在主键上加入INSERTED
和DELETED
表,并检查任何行的新值和旧值是否匹配您要跟踪的模式。