精华内容
下载资源
问答
  • 逻辑删除 isDelete 对于数据库中的数据,我们不希望直接删除,因为一旦删除,就找不回来了,所以不要用物理删除,而用逻辑删除。 在表当中,再添加一个字段isDelete,用来表示该数据是否被删除。 设置为bit类型,...

    逻辑删除 isDelete

    对于数据库中的数据,我们不希望直接删除,因为一旦删除,就找不回来了,所以不要用物理删除,而用逻辑删除。

    在表当中,再添加一个字段isDelete,用来表示该数据是否被删除。
    在这里插入图片描述
    设置为bit类型,默认值为0,表示没有被删除。要删除某个数据的话,就将0改为1即可。

    展开全文
  • Mysql逻辑删除保留唯一索引

    千次阅读 2020-08-03 14:33:37
    通常的业务系统中为了防止认为操作失误,造成误删数据,都要求对于删除操作只执行逻辑删除,即假删除。常见的做法添加删除标识字段,用户操作删除时更新删除标识字段来达到目的。但是当遇到表中需要有唯一性索引时则会...

    通常的业务系统中为了防止认为操作失误,造成误删数据,都要求对于删除操作只执行逻辑删除,即假删除。常见的做法添加删除标识字段,用户操作删除时更新删除标识字段来达到目的。但是当遇到表中需要有唯一性索引时则会造成问题。

    案例

    创建一个商品编码为A110的商品,商品编码为该表的唯一性索引,此时对该商品进行删除后,无法再次添加商品编码为A110的商品。

    将删除标识加入唯一索引

    把商品编码和删除标识设置为复合唯一索引,删除A110商品后可以再次新建一个A110,解决了上述问题。但是此时需要再次删除A110商品时则会出现无法删除。

    再添加一个token标识

    将商品编码与token标识设置为复合唯一索引,删除记录时将ID存入token标识中,这样每次删除时由于ID不一致则不会导致无法删除的情况。需要注意的是这样删除操作将会无法批量处理,必须逐条更新

    最终解决方案

    将商品编码与删除标识设置为复合唯一索引,每次删除时将删除标识设置为NULL,由于NULL不会与其他字段有组合唯一的效果,所以完美的解决了逻辑删除保留唯一索引的问题。

    展开全文
  • 在业务中有个唯一约束A,当该业务进行逻辑删除后(设置标记为删除状态),再往唯一约束列插入相同的值时,此时会报Duplicate entry,但在业务上,该值是必须要插入的。 二、解决思路 方案一:不采用逻辑删除,直接...

    一、问题场景

    在业务中有个唯一约束A,当该业务进行逻辑删除后(设置标记为删除状态),再往唯一约束列插入相同的值时,此时会报Duplicate entry,但在业务上,该值是必须要插入的。

    二、解决思路

    方案一:不采用逻辑删除,直接物理删除

    方案二:  新建历史表

    主表进行物理删除,同时将删除的记录保存到历史表中

    方案三:取消表的唯一约束,同时引入redis来保证唯一约束

    取消表的唯一约束,在项目中引入redis,通过redis来判重,新增时往redis set记录,删除时,删除redis记录

    方案四:变更删除标记为时间戳

    将删除状态不以0,1表示,而是以时间戳为值,然后将删除状态为与之前的唯一约束A重新组成唯一联合约束index(A、del_flag),删除时变更del_flag的时间戳

    方案五:保留删除标记,同时新建一个字段del_unique_key

    保留删除状态位,再新增一个字段del_unique_key,该字段默认值为0,字段类型和大小与主键id保持一致,同时与原先的唯一约束重新组成联合唯一约束index(A,del_unique_key),业务进行逻辑删除,变更del_unique_key的值为该删除行的主键id

    选择哪个方案?

    方案一得从业务的角度上考虑了,如果物理删除,对业务无损,那就无所谓了。

    方案二等于需要删除的记录的表都需要有历史表,如果仅仅是用来实现记录删除记录,感觉有点大材小用。

    方案三引入redis,虽然也可以解决问题,但是又额外增加复杂度,同时还得保证redis和数据库的一致性。

    方案四和方案五其实实现的思路是一样,不过如果已经是在线上跑的业务,还是推荐用第五种方案,毕竟新增字段正常对已有的业务影响相对较小,如果是第四种方案,直接将标志位修改为时间戳,可能还会涉及改业务。如果是新增业务,第四种和第五种方案比较推荐

    展开全文
  • MySQL 物理删除和逻辑删除 物理删除 概念 1、就是用DELETE、TRUNCATE、DROP语句删除数据 2、物理删除是把数据从硬盘中删除,释放存储空间,缩小表体积,对性能提升有帮助 代价 1、物理删除是真的删除,数据恢复...

    MySQL 物理删除和逻辑删除

    物理删除

    概念

    1、就是用DELETE、TRUNCATE、DROP语句删除数据
    2、物理删除是把数据从硬盘中删除,释放存储空间,缩小表体积,对性能提升有帮助

    代价

    1、物理删除是真的删除,数据恢复难度大
    2、物理删除会造成主键不连续,导致分页查询数据慢

    应用场景

    1、核心业务表的数据不适合做物理删除,只做状态变更。
    2、随着业务表数据增长,如何既不删除数据,有缩小表体积,可以把记录转移到历史记录表

    逻辑删除

    1、即在表中添加一个字段(is_deleteed),用字段值进行标记该数据是否已经逻辑删除,查询时跳过这些数据
    2、核心业务表的数据必须采用逻辑删除

    结论

    核心业务数据必须使用逻辑删除,非业务数据看实际进行选择!

    展开全文
  • Mysql 的删除(逻辑删除

    千次阅读 2020-02-21 14:32:28
    一。 删除 1)物理删除 delete from 表名 where 条件 ---》 delete from class ... 2) 逻辑删除 用一个字段来表示 这条信息是否已经不能再使用了; (1)给students表添加一个 is_delete 字段 bit 类型 ...
  • MySQL 学习逻辑删除、命令行

    千次阅读 2019-05-20 13:33:52
    逻辑删除 对于重要数据,并不希望物理删除,一旦删除,数据无法找回 一般对于重要数据,会设置一个isDelete的例,类型为bit,表示逻辑删除 大于大量增长的非重要数据,可以进行物理删除 mysql -hip地址 -uroot -p -h...
  • 逻辑删除就是在想要被删除的数据上打一个删除标记,只要修改状态标识字段就行 使用 is_deleted 字段,设置其数据类型为 bit ,只有两个值 0、1,1表示没有被删除,0表示已经被删除 逻辑上数据被删除,但数据本身依然...
  • Mysql 实现多种逻辑删除方案新增逻辑删除字段方式多deleted值deleted: 0 代表未删除,删除时把deleted赋值为时间戳UNIX_TIMESTAMP(NOW())采用备份表方式 最近在做公司项目的时候,对于表的逻辑删除,和其他同事出现...
  • mysql中的逻辑删除与物理删除

    千次阅读 2018-01-31 14:18:32
    在实际开发过程中,删除数据一定要慎重,对于重要的数据,最好不要轻易的物理删除(即直接删除),在必要的情况下可以使用逻辑删除的方法,即设置一个isDelete/DeleteFlag的列,类型为bit,表示逻辑删除
  • Mysql InnoDB存储引擎中,随着互联网产品的运营,一个表的数据肯定会有增加、更新和删除, 那么究竟是物理删除还是逻辑删除好呢? Delete 物理删除:在InnoDB存储页(page,每页默认16k大小,读写访问的最小单元...
  • 比如,在删除执行中,第一条就命中了删除行,如果 SQL 中有 limit 1;这时就 return 了,否则还会执行完全表扫描才 return。效率不言而喻。 那么,在日常执行 delete 时,我们是否需要养成加 limit 的习惯呢?...
  • MYSQL利用存储过程清理所有表逻辑删除数据 注意每个表都必须统一由逻辑删除的标记字段status (维护的数据库不多的情况下可以隔一段事件手动执行一下)需要自动定时执行存储过程的,后期可以加个定时任务事件 ...
  • MySQL逻辑备份mysqldump

    2015-10-28 10:49:00
    一个用mysqldump做逻辑备份的小脚本 用于小数据量的备份,全库,按日期,按库,按表,进行分类 # date -s "2015/01/01" && bash mybackup.sh ...# 每隔7天删除旧的备份目录 db_backup_root=...
  • MySQL服务器逻辑架构

    2018-09-11 10:29:39
    为什么要删除查询缓存模块,表中任何一条记录有更新就会清空该表的所有查询缓存 第一层,每个客户端连接都会在服务器进程中拥有一个线程,服务器会缓存这些线程,所以不需要为每个连接创建或者销毁线程;(连接处理...
  • 逻辑删除时失败

    2020-12-25 18:57:05
    当启用逻辑删除时,添加修改功能正常,删除时报如下错误。 <p>2020-05-12 14:48:50.374 +08:00 [ERR] MySql.Data.MySqlClient.MySqlException (0x80004005): Table 'basevue.sysadmin' ...
  • 保存到服务器与mysql省略 其中服务器保存图片本身 mysql保存图片路径 保存时mysql还存了一条过期时间 是nue了一个date括号里面是当前时间...删除mysql此数据 若不想用宝塔可用java定期任务可借鉴 java定期任务简单写法
  • 在数据表结构设计的时候有同时存在唯一索引和逻辑删除,通常逻辑删除is_deleted是取值范围0、1,当删除同一个唯一索引字段值时,就会失败。 二、 解决方案 2.1 物理删除 不再设置逻辑删除标志位,直接物理删除,这...
  • 关于mysql删除

    2021-01-27 12:48:24
    使用delete删除语句时,只是逻辑性的删除,并没有在内存中删除掉,这一行的数据的位置任然被占用,我们新添加数据是会跳过这一行,会大量占用内存空间 使用truncate删除是物理删除,会清空数据页, ...
  • 数据库数据物理删除和逻辑删除

    万次阅读 2018-11-02 22:09:06
    然后,运维那边MySQL的bin log设置的没6个小时生成一次,恰巧要等一段时间,客户着急做业务,幸好从阿里云上把数据库某个时间点的数据备份出来查到了被删除的数据,及时补了回来。  物理删除:指文件存储所用到的...
  • 乐观锁和逻辑删除

    千次阅读 2018-02-22 14:34:14
    本篇介绍easymybatis如配置乐观锁和逻辑删除。乐观锁easymybatis提供的乐观锁使用方式跟JPA一样,使用@Version注解来实现。即:数据库增加一个int或long类型字段version,然后实体类version字段上加上@Version注解...
  • 同步数据是依照Oracle数据库的数据为准,所以同步过后MySQL数据库会存在一些脏数据,必须删除。但是脏数据肯定不少,这就牵扯到了MySQL的批量删除。我先把错误方法列出来,看看各位有没有踩坑。然后再推荐使用哪些...
  • 图片下边的【+】表示新增记录 这个是刷新 逻辑删除 给记录添加一个字段,【isDelete】,设置为 bit 类型,默认为 0 可以修改为 1 这样使用的时候可以直接过滤这条,只选择【isDelete】是 0 的数据 这样的话就做到...
  • 远程备份语句本地备份语法常用备份数据选项备份注意避免锁库逻辑备份数据1,备份表备份单个表语法备份多个表语法2,备份库备份单个库语法备份多个库语法备份所有的库语法3,查看存放备份的目录恢复数据库和表恢复库...
  • 本篇介绍easymybatis如配置乐观锁和逻辑删除。 乐观锁 easymybatis提供的乐观锁使用方式跟JPA一样,使用@Version注解来实现。即:数据库增加一个int或long类型字段version,然后实体类version字段上加上@Version...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,194
精华内容 477
关键字:

mysql逻辑删除

mysql 订阅