MYSQL 中,把 select 和 update 两个相关语句,捏成一个 update 语句,是良好做法吗?

2015-04-01 19:25:13 +08:00
 schezuk
一个表,主键`id` 列`content` 列`pwd`
当密码(`pwd`)符合数据库记载,则允许修改`content`
那么下面两个方式哪一个是良好的做法?

--------
1. 分成两句sql,先查后改
  select * where id=12345
php对返回的这一行数据,根据pwd字段判断是否继续执行下一条sql
  update set …… where id=12345

--------
2. 是单一sql语句,捏在一起
  update set …… where id=12345 and pwd='password'
根据影响了1行还是0行判断执行成功与否

--------
3. 请问,我要在php中prepare并执行下面语句
  update set `content`=:content where id=12345
在php中怎么修改该语句,使得当
  empty($array[':content'])===true
时,`content`字段不被修改?
3496 次点击
所在节点    程序员
1 条回复
lyoe
2015-04-01 22:26:53 +08:00
如果你的代码逻辑需要在查询后做一些业务处理然后再update,可以先查再写,注意需要用锁,悲观锁乐观锁都可以,防止并发;
如果仅仅为了更新,一次update判断成功条数就够,节约一次查询;

content为空时不更新,最好分成两条不同的sql;

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/180937

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX