这可能是一个微不足道的问题,但无论如何我都会问:可以在一个数据库中的三个或四个表中更新,触发对另一个数据库中的一个或两个表的更新(在MS SQL 2005中?)我很高兴能够创建任何数量的必要T-SQL,而且我还拥有具有C#能力的VS 2008,但之前从未写过这样的触发器。
基本上,我有数据存储库的“GetProducts()”在任何数据加载时调用我的存储过程,他们需要什么范围,我实际上改变了“缓存”数据。生活中的一切都很好。
现在,他们根本不希望将数据更新作为存储库的一部分。他们认为这是项目的外部,应该在没有互动的情况下处理。
任何人都有什么建议可以追求什么?已经存在的想法的链接将非常棒。
答案 0 :(得分:2)
触发器仅在更新,插入或删除一个表时启动。如果你有特定的顺序必须插入表,你可以把触发器放在最后一个。
或者,您可以编写触发器来检查其他表,以确保所有表都有记录。或者你可以为每个表写一个触发器。或者,如果不需要实时更新,您可以定期运行一个作业来处理所需的更改。不知道你想要做什么,很难说什么是处理你的特定情况的最佳方法。无论您使用触发器做什么,记住触发器都会对数据集进行操作,而不是一次一行。应始终编写它们以处理多行插入,更新或删除,或者迟早您的触发器将导致数据完整性问题。不要在游标中执行此操作,除非您希望将某个生产表锁定几个小时,此时有人需要为新客户端添加3,000,000条新记录。
答案 1 :(得分:1)
如果这是你想要的:
check database A for updates of table1, table2, table3, and or table4
then update database B table5 and/or table6
您需要使用存储过程来封装数据库A中原始更新的所有必要逻辑和事务以及数据库B中的结果更新
答案 2 :(得分:0)
您是否在询问是否更新这三个表,然后触发一个触发器?但是,如果只更新三个表中的两个,则不触发触发器?
你的触发器可以更新任意数量的表,它们也可以导致其他触发器触发,如果你想生活在危险的一面,你甚至可以让它们递归,导致原始触发器再次触发。
然而,没有任何东西能够符合我的想法。不是说它无法完成。