我已经读过' truncte'是一个DDL,也可以回滚删除的数据' truncate' 。这是相当矛盾的,因为我们无法回滚任何DDL语句。你能解释一下这个概念吗?
答案 0 :(得分:1)
这取决于支持DDL的数据库是事务性的。例如,IBM DB2,Ingres和PostgreSQL支持此功能,但另一方面Oracle不支持(它支持不同的东西) - 您无法在Oracle中回滚truncate
语句。
这里是对PostgreSQL贡献者创建的databases supporting transactional DDL的非详尽概述。
编辑:要回答您的问题,通常需要使用事务性DDL。例如。在需要特定数据库架构的软件组件的版本升级期间。
仅仅是我的两分钱:我的许多客户都使用Oracle。现在不要误会我的意思,Oracle是一个很好的数据库,但缺乏事务性DDL可能非常烦人,因为你总是要记住它。