`

小心truncate table事务陷阱

    博客分类:
  • db
阅读更多

使用spring配置的jdbc事务,突然发现回滚无效了。。。郁闷,发现一大片代码中有几句truncate table语句(本来想提高性能的),结果就是这个导致了事务失效。。。把truncate table 改成 delete就好了 -- 的确,truncate 是不记录进事务的,但是为撒加了truncate table语句事务会失效呢?郁闷~不能做下特殊处理?

分享到:
评论

相关推荐

    oracle中truncate table后的数据恢复

    在Oracle数据库中,`TRUNCATE TABLE`是一个用于删除表中所有数据的命令,它与`DELETE`语句不同,不记录任何删除操作,并且在大多数情况下执行速度更快。然而,一旦执行`TRUNCATE TABLE`,数据通常无法通过常规的...

    Truncate Table的用法讲解

    4. **回滚与触发器**:由于 `TRUNCATE TABLE` 不记录在事务日志中,因此无法通过事务回滚撤销操作,也无法激活触发器。而 `DELETE` 可以。 5. **外键约束**:如果有外键约束引用该表,`TRUNCATE TABLE` 不可用,此时...

    Oracle给用户授权truncatetable的实现方案

    在Oracle数据库管理中,有时需要为特定用户授权执行`TRUNCATE TABLE`操作,以便他们在自己的职责范围内能够清理数据而不影响其他用户。然而,Oracle不支持直接为用户授予针对单个表的`TRUNCATE`权限,而是通常将更...

    SQL Server中TRUNCATE事务回滚操作方法

    如果在事务内执行了`TRUNCATE`命令,然后在事务结束前没有提交(`COMMIT`),而是选择了回滚(`ROLLBACK`),那么这一系列操作可以被撤销,包括`TRUNCATE`所删除的数据。 以下是一个具体的示例: 首先,我们创建一...

    PostgreSQL TRUNCATE TABLE

    在 PostgreSQL 数据库管理系统中,`TRUNCATE TABLE` 是一个非常实用的命令,它用于快速地删除表中的所有数据,但保留表的结构。与 `DELETE` 语句不同,`TRUNCATE TABLE` 不会逐行删除数据,而是直接移除整个表的数据...

    Oracle_审计表_sys.aud$_授权给用户Truncate权限.docx

    EXECUTE IMMEDIATE 'TRUNCATE TABLE SYS.AUD$'; END; ``` - **授予执行权限**:接着,向需要执行该操作的用户(本例中为`DB_USER`)授予此存储过程的执行权限。 ```sql GRANT EXECUTE ON proc_truncate_aud TO...

    MySQL中truncate误操作后的数据恢复案例

    实际线上的场景比较复杂,当时涉及了truncate, delete 两个操作,经确认丢数据差不多7万多行,等停下来时,差不多又有共计1万多行数据写入。 这里为了简单说明,只拿弄一个简单的业务场景举例。 测试环境: Percona-...

    清空ecshop体验数据的简单方法

    TRUNCATE TABLE `ecs_admin_log`; TRUNCATE TABLE `ecs_article`; TRUNCATE TABLE `ecs_brand`; TRUNCATE TABLE `ecs_comment`; TRUNCATE TABLE `ecs_category`; TRUNCATE TABLE `ecs_goods`; TRUNCATE TABLE `ecs_...

    truncate 功能开发文档1

    3. `TRUNCATE TABLE`不能在事务处理或表锁定期间执行,否则会导致错误。 4. 即使数据或索引文件损坏,只要表定义文件合法,仍可使用`TRUNCATE TABLE`将表恢复为空。 在Cedar中,`TRUNCATE TABLE`语法支持一次性清空...

    SQLite Truncate Table

    在 SQLite 数据库中,虽然没有直接的 `TRUNCATE TABLE` 命令来清空一个表的所有数据,但是可以通过组合使用 `DELETE` 和 `VACUUM` 命令来达到相同的效果。这里我们将深入探讨如何在 SQLite 中实现类似 `TRUNCATE ...

    TRUNCATE与 DELETE区别

    首先,TRUNCATE TABLE 是一种快速删除表中所有数据的方式,它并不记录每行的删除操作,而是直接释放存储数据的页面。这意味着,当使用 TRUNCATE 时,事务日志空间的使用量非常小,这对于大型表尤其有利。相比之下,...

    数据库中truncate,delete,drop语句的比较

    - 可以重用存储空间,即如果执行`TRUNCATE TABLE table_name REUSE STORAGE`,则可以释放未使用的空间并允许再次使用。 2. **`DELETE`**: - **定义**:`DELETE`是一种DML(数据操纵语言)命令,用于删除表中的...

    ZenCart常用SQL命令

    与使用`DELETE FROM`语句相比,`TRUNCATE TABLE`在执行效率上更高,因为它不涉及记录删除日志的操作,而是直接释放已分配的空间。 #### 四、总结 通过上述介绍可以看出,在ZenCart的二次开发过程中,合理使用SQL...

    SQL中Truncate的用法

    但是,TRUNCATE TABLE 速度更快,使用的系统资源和事务日志资源更少。下面介绍SQL中Truncate的用法 当你不再需要该表时, 用 drop;当你仍要保留该表,但要删除所有记录时, 用 truncate;当你要删除部分记录时...

    delete from 表名与truncate table 表名区别

    另一方面,`TRUNCATE TABLE` 不记录在事务日志中,因为它被视为结构修改而非数据修改。这意味着 `TRUNCATE` 无法被回滚,且不会触发 `DELETE` 触发器。对于需要审计或者依赖触发器的应用来说,这可能是一个重要的...

    ORACLE truncate 数据恢复

    然而,这也意味着`TRUNCATE`操作一旦执行,数据就无法通过正常的数据库事务回滚来恢复,这对于初学者来说可能是一个陷阱。 当误用`TRUNCATE TABLE`导致数据丢失时,如果没有备份,恢复过程通常比较复杂。以下是一些...

    truncate表恢复

    在数据库管理中,"TRUNCATE"命令是一个用于删除表中所有数据的高效操作,它与"DELETE"命令相似但有所不同。"TRUNCATE"不记录单个行的删除,因此速度更快,同时也不触发与删除操作相关的任何触发器或回滚段。然而,这...

Global site tag (gtag.js) - Google Analytics