关于数据库的一道笔试题

recored 2016-12-16 01:34:24
假设有A、B两个人同时用同一个账号分别下金额为50和60的订单,但是账号余额只有100,如果不做处理,他们下订单都会成功。问:做一个怎样的简单处理。
...全文
449 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdsnhan 2016-12-19
  • 打赏
  • 举报
回复
引用 2 楼 wmxcn2000 的回复:

-- 只有一个会成功

-- 会话1 
update t set num = num - 50 where num >= 50 ;
-- 会话2
update t set num = num - 60 where num >= 60 ;

这个方法很严密,也很简单
com_jia 2016-12-16
  • 打赏
  • 举报
回复
引用 2 楼 wmxcn2000 的回复:

-- 只有一个会成功

-- 会话1 
update t set num = num - 50 where num >= 50 ;
-- 会话2
update t set num = num - 60 where num >= 60 ;

两个都会成功,假设数据库只要一条数据的话,一个修改了会话修改了1条数据,一个会话修改了0条数据。
com_jia 2016-12-16
  • 打赏
  • 举报
回复
引用 3 楼 cnceohjm 的回复:
[quote=引用 2 楼 wmxcn2000 的回复:]

-- 只有一个会成功

-- 会话1 
update t set num = num - 50 where num >= 50 ;
-- 会话2
update t set num = num - 60 where num >= 60 ;

[/quote] 将这个字段加上约束,不能小于零就行,那么 update t set num = num - 50 where id=user_id; update t set num = num - 50 where id=user_id; 这两个SQL对应的会话一个会成功,另一个会报违反该约束的错误,违反该约束的时候程序就可以返回余额已不足的提示,同时用户还可以重新查看最新账户余额。 如果按照水果给的SQL,第一没有考虑用户ID,会扣所有用户的钱,另一方面程序得去判断UPDATE到底更新了没有,说白了就是你执行语句后因为没有报错,所有根本不知道到底扣没有扣钱,得去检验语句执行结果,要不然都会成功。
H_Gragon 2016-12-16
  • 打赏
  • 举报
回复
引用 2 楼 wmxcn2000 的回复:

-- 只有一个会成功

-- 会话1 
update t set num = num - 50 where num >= 50 ;
-- 会话2
update t set num = num - 60 where num >= 60 ;

卖水果的net 2016-12-16
  • 打赏
  • 举报
回复

-- 只有一个会成功

-- 会话1 
update t set num = num - 50 where num >= 50 ;
-- 会话2
update t set num = num - 60 where num >= 60 ;

moscot_wu 2016-12-16
  • 打赏
  • 举报
回复
行级锁,做一个锁啊
企业公司软件测试面试笔试题集合 软件测试面试题 (测试基础).doc 01_企业面试试卷(综合).doc 01_企业面试试卷(综合)_参考答案.doc 04_企业面试试卷(测试基础).doc 04_企业面试试卷(测试基础)_参考答案.doc 500强公司面试的经典正确与错误回答对比!!! 看看你的弱点.doc C面试题.txt Java初学者都必须知道的六大问题.doc 百度笔试题.txt 北京博彦科技笔试+面试.doc 北京大学计算机科学技术研究所.doc 波尔世通的笔试+面试.doc 测试人员面试题.doc 测试题.doc 常见的测试题(转贴).doc 传视数码公司的面试题.doc 汉端笔试题(7页).doc 合力金桥的笔试题.doc 华为面试题.doc 经典逻辑题.ppt 联合网视面试题.doc 美国英网软件公司题目.doc 面试考题(腾讯,招行等等).txt 某公司的面试试题.doc 奇虎面试题.doc 千像互动的笔试.doc 清华同方开发的面试题 (有兴趣的看一下了 !).doc 缺陷的等级划分,一个经常被问到的问题.doc 软件测试工程师笔试试题(大集合).doc 软件测试工程师测试试题大集合(二)包括答案.doc 软件测试工程师试题发布版.doc 软件测试试题.doc 软件评测复习知识点(小颖).doc 软通动力面试笔答.doc 瑞星笔试题(15道).doc 神州泰岳测试试题(笔试)转贴.doc 时力科技面试题.doc 瓦瑟笔试题(限男性).doc 喜安科 面试题.doc 性能计算公式.txt 亚控科技比试题.doc 一道测试notepad笔试题.doc 一道数据库笔试题目.doc 一个外包测试公司的笔试题!.doc 一家通讯公司的面试题目.doc 英文自我介绍大全.doc 英语面试.doc 英语面试题.doc 有意思的逻辑题.doc 中软的面试题(转贴).doc

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧