我被要求实现一些代码,这些代码将更新MS SQL Server数据库中的一行,然后使用存储的proc将更新插入历史表中。由于我们无法控制数据库,因此我们无法添加存储的proc来执行此操作。我知道您可以在存储过程中进行更新,然后在另一个存储过程中调用execute。我可以使用一个SQL命令将其设置为在代码中执行此操作吗?
您实际上并不需要为此存储的过程。问题的实质归结为您是否可以控制所有插入物。如果实际上您可以访问所有插入,则只需将插入包装到数据表中,然后将插入包装到历史表中就可以。这将确保两者都完成以使“成功”发生。但是,在事务中按顺序访问表时,您需要确保不先锁定historytable再锁定datatable,否则可能会出现死锁情况。
但是,如果您无法控制插入,则可以将触发器添加到某些数据库系统,从而使您可以访问修改,插入或删除的数据。它可能会或可能不会为您提供所需的所有数据,例如谁执行了插入,更新或删除操作,但它会告诉您更改了什么。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。