V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ZiLong  ›  全部回复第 16 页 / 共 17 页
回复总数  336
1 ... 8  9  10  11  12  13  14  15  16  17  
@Nagisa1992 你这个后台不好区分是 update 还是 insert,你如果不加唯一性约束,有可能插入重复的,加了的话,你查询的时候数据库没有,但你插入的时候有可能数据库被其他线程插入了你要插入的数据,你不管直接不加就是了,你要管的话,就要判定抛出的是否是唯一性约束检验失败抛出的异常,进而执行 Update 才++.
另外的方式是,让前端(APP)告诉你是 inset 还是 update,比如,更新和插入走不同接口或者加入一些辅助判断的字段.还有,可以写存储过程或函数,让返回值告诉你.
2016-09-28 15:54:49 +08:00
回复了 ZiLong 创建的主题 问与答 Mysql 的事务是互斥的么
@pubby 但是事务的隔离性是用锁等基础设施实现的
@vwhenx 框架只是帮你简化工作,但是框架实现细节应该也会遇到类似问题
@Ouyangan 我觉得你概念搞错了,事务用于保证 ACID,但事务不是互斥的,无法解决并发问题.比如,我查询的时候本来是没有的,然后我查完了,应用程序在做其他事情(比如组装数据),此时其他线程向数据库中插入了一条数据,这条数据与我要插入数据相同,我插入的时候就重复了.这只是一种并发情况,很多种情况都会造成类似这样的并发问题,进而导致数据重复
@vwhenx @Ouyangan 查数据库为了用户体验的话,相当于这个场景很类似上面人提到的 ajax,比如 ajax 单独查用户名是否重复.不知道你说是否是这样的场景?我的意思是所有的字段都比如密码,生日这些都来了,然后要进行入库操作了,是先查询好,还是直接插入由数据库约束. @tairan2006 同学也提到了查询的并发问题,我觉得这提的很好.
@xss 我只是想比较两种方式的优缺点,具体怎么做,封不封装函数不关心
@tairan2006 谢谢,一针见血
@xss 明显是用唯一性约束爽噻,查数据库不写代码么
@murmur 针对这个场景,我可不可以加唯一性约束,直接插入数据库,通过捕获抛出的异常来判定是重复的呢
@benatsh 我是追求越高越好
2016-09-27 10:49:22 +08:00
回复了 ZiLong 创建的主题 问与答 在开发阶段该不该使用外键?如果不使用,理由是什么呢?
@georgema1982 可以详细说下你的观点么,或者有相关文档文章推荐
2016-09-27 10:47:07 +08:00
回复了 ZiLong 创建的主题 问与答 在开发阶段该不该使用外键?如果不使用,理由是什么呢?
@qwer1234asdf 我还是觉得外键用着爽,公司没用,我就 u 太明白
2016-09-27 10:46:28 +08:00
回复了 ZiLong 创建的主题 问与答 在开发阶段该不该使用外键?如果不使用,理由是什么呢?
@iloveyou 软删除,所有关联这条记录的都置空,还是以后查询的时候多个条件判定删除标志
@ihuotui 恩恩,暂定把 nexus,gitlab,jenkins
@Weixiao0725 破解吧......
@xiaochong dropwizar 看起来不错,就算不用,也可以从里面挖点东西来学
@mritd 简明扼要,多谢
2016-09-26 19:49:49 +08:00
回复了 ZiLong 创建的主题 问与答 在开发阶段该不该使用外键?如果不使用,理由是什么呢?
@murmur 自己做级联删除,那表多了,关系复杂的话,比如你删除的记录关联的记录又关联了其他记录....这样的,级联靠自己,心智负担还是有点大.
2016-09-26 18:54:45 +08:00
回复了 ZiLong 创建的主题 问与答 在开发阶段该不该使用外键?如果不使用,理由是什么呢?
@liprais 为什么性能差呢?有相关文档介绍过么?然后最佳的解决方案就是不用?
1 ... 8  9  10  11  12  13  14  15  16  17  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2639 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 17ms · UTC 04:29 · PVG 12:29 · LAX 20:29 · JFK 23:29
Developed with CodeLauncher
♥ Do have faith in what you're doing.