我的问题主要关注“什么是最好的表现”,但有点“哲学”说话(如果它有所作为)......所以让我们跳吧[TableA]。[ColumnB]存储需要存在于[TableC] [ColumnD]中的值。 没有涉及外键的答案 - 只是假设他们在这种环境中“不允许”出于任何原因。因为“情况x,y,z”,[TableA]。[ColumnB]有时会得到[TableC]。[ColumnD]中不存在的值,因为假设[TableA]从一个存在于运行代码中的对象作为“序列化blob”,数据的内存中表示形式以及[ColumnB]值在从[TableC]。[ColumnD]被其他进程删除之前被填充。无论如何,这只是一个例子,所以不要陷入“为什么会发生这种情况”,只是接受它而已。SQL Server - 插入触发器与每分钟作业
要“解决”问题,哪种方法最适合这两种方法:1.在[TableA]上触发on-INSERT的Trigger,将[ColumnB]更新为它应该的值(并假设I有一个“坏到好”值的“映射”)。或者,2.每小时/分钟/运行一个计划任务更新查询以将所有可能的“坏”值更改为其相应的“良好”值。
更一般地说,有什么更好的性能和/或什么是最佳实践:触发器或定期预定作业?在上下文中,假设[TableA]的数量通常在数十万行的数量级上,Inserts每次发生10-100条记录,每隔几分钟一次,甚至每天几次。
谢谢大家!触发它......我不兴奋地在20多个不同的DB上创建一个,但是,这就是生活。 – NateJ 2012-04-18 17:29:46