当SQL记录更新时,我想要一个记录,例如一个位char
或int
作为标志,将null
,{{1} },或off
。
然后我希望有一个不同的应用程序标记,一旦通过它就会用标记进行记录。
但是,如果我手动更新记录,或通过SP,我希望标志重置。
我不想使用触发器,或者修改存储过程来执行此操作,但是如何获得将更新的标记类型字段?
答案 0 :(得分:2)
你刚刚取消了两种标准做法。
触发器允许强制一致性,绕过它们的唯一方法是明确地将其关闭。
存储过程允许您将API公开给不同的用户/登录/组/等;如果写入活动只能通过API发生,那么您已确保获得所需的行为(非常类似于对象上的方法,数据库是对象)。然后,管理员用户可以直接访问表以调用不同的行为,或者可以访问具有不同行为的不同SP。
通常我会提倡SP。允许人们直接访问应用程序的数据库/表通常是个坏主意。最终他们会忘记WHERE子句。
我能想到的唯一另一个选择是强制通过应用程序进行所有访问,并有效地构建对该应用程序的行为和访问控制。基本上将SP迁移到应用程序中。