我没有导师可以问,所以我在寻求来自DBA社区的指导。我负责一个SERVER 2008 R2和SQL数据库,这些数据库是一个网站的资源和一个小公司的ERP系统。我已经犯了一个错误:在没有WHERE语句的情况下进行更新(幸运的是,它只影响了表w/ 30行)。但是,对于某些包含20K+行的表,在Server中更新表的正确方法是什么?我是先创建一个测试数据库副本并对其执行更新(但这没有将网站或ERP与其连接起来,因此我可以看到与这些副本有关的结果),还是事务功能是我应该学习和学习的方向,它的回滚功能似乎是正确的方法,或者可能还有其他一些其他进程所有SQL SERVER DBA都遵循。如有任何建议,我们将不胜感激。
发布于 2014-03-30 04:57:49
研究以下几点:
然后再读一遍这个一般的技巧:
发布于 2014-03-30 12:22:18
除了使用显式事务外,我通常首先编写一个SELECT语句来查看会影响多少行,然后将WHERE子句复制到UPDATE语句中。
SELECT * FROM [SomeTable] WHERE [SomeDateColumn] > '3/1/2014'
由此,我看到100行将被更新。
因此,我要么复制WHERE子句,要么将SELECT转换为更新
UPDATE [SomeTable] SET [SomeIntColumn] = 8 WHERE [SomeDateColumn] > '3/1/2014'
如果将此与显式事务结合使用,则如果选择和更新之间的记录计数不匹配,则可以回滚。
这是一个很有用的习惯。
https://dba.stackexchange.com/questions/62071
复制相似问题