99% 的人都不知道的 SQL Update 奥秘

 

不好意思,标题党了。但真是事实!

 

刚开始玩 SQL 的时候,CRUD 语法背得贼溜。自以为这是 SQL 的全部,天天热心的在网上泡论坛,回答这类问题。似乎会个 Join 都是万人敬仰的事情了。放到今天,让你笑掉大牙。那时,2003 年...

 

第一份工作,正式的操作 CRUD 了,在 2000 多用户的 MES 中,自信的加入了各种 SQL DML 语句。看着稳稳当当的 MES 系统,自信满满。直到有一天,返聘的退休老工程师(写 VFP + SQL)老王把我叫到办公室。

 

“这是你写的 Update ?”

 

"有什么问题吗,王师傅?”

 

“程序挂起 10 来分钟了...”

 

"不就是简单的 update 嘛,平时都运行好好的”

 

“把 Job Kill 掉重跑...”

 

99% 的人都不知道的 SQL Update 奥秘

 

一晃很多年过去了,提起这个事儿,特别有感受。

 

或许你以为直接写个 Update 很简单,就是更新数据那么干脆,然而数据库却不愿意这么想。最近我文章中经常会提出一些写 SQL 的注意事项,很多有心的读者会写信问我,为什么不能直接写 Update/Delete/Insert.. From. 大概你们也是这么想的吧。如果没经历过,大概过了 10 年也是这么做了,我在很多老系统代码里经常看到这种写法:

 

update OrderHeader 

set OrderTotal = OrderItemCount * SinglePrice ; 

 

或者

 

Delete OrderHeader 

Where OrderDate< GetUtcDate() - 1000 ;

 

又或者:

 

Insert into OrderHeader 

    SELECT * FROM OrderHeaderStg ;

 

 

99% 的人都不知道的 SQL Update 奥秘

 

我先不说原理吧,大家果真认为这 SQL 能用到生产环境去?欢迎留言区讨论。

 

99% 的人都不知道的 SQL Update 奥秘

猜你喜欢:

 

SQL 数据库学习路线推荐

如何写好上千行的 SQL 存储过程(附代码规范)

怎样评价一个几千行的 SQL 存储过程

 

99% 的人都不知道的 SQL Update 奥秘

 

我们的知识星球,20 个席位,满人就开车,现剩 8 张座位,等你来。

 

99% 的人都不知道的 SQL Update 奥秘