当前位置: 首页 > news >正文

可以访问的国外网站关键词优化和seo

可以访问的国外网站,关键词优化和seo,建设网站需要什么人员,深圳网站建设服务哪个便宜啊唯一性约束和逻辑删除的冲突 问题描述 如果一张表中,存在唯一性约束,比如一些数据中的code,且数据表使用逻辑删除。当删除某行数据的时候,以后再次插入相同code的数据,数据库会报错。 问题分析 在逻辑删除中&#…

唯一性约束和逻辑删除的冲突

问题描述

如果一张表中,存在唯一性约束,比如一些数据中的code,且数据表使用逻辑删除。当删除某行数据的时候,以后再次插入相同code的数据,数据库会报错。

问题分析

在逻辑删除中,数据没有被物理删除,而是用一个deleted字段标记数据已被删除,当查询数据时过滤掉已删除的数据。实际上数据仍保留在数据库中。当插入相同code的数据时,数据库的唯一性约束会限制数据的插入。

PS:如果使用的是mybatis-plus框架,可以通过配置文件开启逻辑删除功能。当查询数据时,会在where条件自动拼接deleted。

解决方案

解决方案是多样的,要基于业务和资源做权衡。由于项目要保持逻辑删除不变(数据是无价的!),解决方案是在有唯一性约束的表中,通过新增一个delete_timestamp字段,组成联合索引。delete_timestamp默认为0,在删除数据时,delete_timestamp赋值。这样,当下次插入的时候,数据库不再单独对code做唯一性校验,而是对code和delete_timestamp组成的联合索引做唯一性校验。由于删除后的delete_timestamp与新增的delete_timestamp必定不同,所以不会再有重复插入数据的报错。如果数据没被删除,新插入相同的code时,由于delete_timestamp都默认是0,所以同样会正常拦截。

PS:对于delete_timestamp字段的操作,建议封装成公共方法。

尽量不使用外键

虽然在学习的过程中,为了理想中的保持数据一致性,外键会经常被提及。但在实际业务开发过程中,非必要不使用外键约束。原因在于外键的使用可能引发一系列数据一致性的问题。比如在表中做增删改操作时,如果表字段使用了外键,要同时考虑外键所在表的数据一致性问题。这些问题会非常频繁地出现,而且解决起来会大大增加业务代码的复杂度,增加了维护成本和风险。

不使用外键,但又有相关需求,需要在一张表中存入另一张表的主键,如何实现?这种情况可直接通过业务代码控制,在插入数据时,先查询到相应的数据再插入。当然这不可避免难以保持数据一致性,但比起要保持数据一致性付出的代价,在业务层处理的成本要低得多。

总结

在数据库中建立的数据约束,都应该在业务层的时候做好相关校验,让错误在业务层被拦截并抛出,这样做有助于数据被定位和友好提示。数据库约束,是最后一道防线。

http://www.dinnco.com/news/53116.html

相关文章:

  • 如何做企业网站的更新百度手机应用商店
  • 响应式网站国内外现状购物网站有哪些
  • 微网站开发方案模板深圳网站制作公司
  • 用自己的电脑做视频网站吗各种手艺培训班
  • 网站建设需要会什么软件有哪些内容软件外包公司有哪些
  • 做外贸都做哪些网站好免费下载宿迁网站建设制作
  • 做网站好还是做商城好怎样在百度做广告宣传
  • 设计网站首页要几天如何创建自己的个人网站
  • b2c网站制作建网站软件工具
  • 免费网站建站软件微信公众号小程序怎么做
  • 江宁网站建设报价出售网站平台
  • 网站开发 演讲山东seo费用多少
  • 广东专业做网站排名哪家好爱站网站长工具
  • 如何设置手机网站主页长沙靠谱seo优化费用
  • 网站上的信息可以做证据吗杭州seo百度关键词排名推广
  • 替别人做设计的网站域名查询网址
  • 水果网店网站建设策划书google推广工具
  • wordpress可以做手机网北京百度seo
  • 微信编辑器做网站网络营销的用户创造价值
  • 专业网站开发服务360优化大师旧版
  • 织梦手机网站怎么做公司怎么做网站推广
  • 晋江网站建设哪家好谷歌app下载 安卓
  • 合肥手机网站制作友情链接免费发布平台
  • 用户体验最好的网站全网营销整合推广
  • 怎样给响应式网站提速怎么优化网站排名才能起来
  • 美容整形网站模板千锋教育培训机构学费
  • 自己做网站用买域名吗百度互联网营销顾问
  • seo做论坛和企业网站差别淘宝关键词优化技巧教程
  • 长春有几个站可以坐火车谷歌浏览器chrome官网
  • 云南建个网站哪家便宜为什么打开网址都是站长工具