96SEO 2026-02-20 08:31 23
。

当删除某行数据的时候#xff0c;以后再次插入相同code的数据#xff0c;数据库会报错。
如果一张表中存在唯一性约束比如一些数据中的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字段的操作建议封装成公共方法。
虽然在学习的过程中为了理想中的保持数据一致性外键会经常被提及。
但在实际业务开发过程中非必要不使用外键约束。
原因在于外键的使用可能引发一系列数据一致性的问题。
比如在表中做增删改操作时如果表字段使用了外键要同时考虑外键所在表的数据一致性问题。
这些问题会非常频繁地出现而且解决起来会大大增加业务代码的复杂度增加了维护成本和风险。
不使用外键但又有相关需求需要在一张表中存入另一张表的主键如何实现这种情况可直接通过业务代码控制在插入数据时先查询到相应的数据再插入。
当然这不可避免难以保持数据一致性但比起要保持数据一致性付出的代价在业务层处理的成本要低得多。
在数据库中建立的数据约束都应该在业务层的时候做好相关校验让错误在业务层被拦截并抛出这样做有助于数据被定位和友好提示。
数据库约束是最后一道防线。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback