gpt4 book ai didi

sql - 有没有办法检查截断表?

转载 作者:行者123 更新时间:2023-12-04 02:20:26 25 4
gpt4 key购买 nike

有时我会尝试在多个模式之间测试场景,删除/修改表,插入/更新/删除查询,一些模式正在测试,其他模式对生产很重要。所以有时我会不小心在错误的模式中运行查询。所以 commit 功能在这种情况下确实有帮助。

然而,Truncate table tab1 不需要commit,如果我在错误的架构中执行它......你知道这个场景。

我的问题:是否有像DML Statment 那样提交truncate 表的解决方法?如果你删除了一个语句,你必须包含一个提交,或者在 plsql 中你必须点击绿色按钮来提交。

我使用这样的检查,每次我想截断我都必须修改条件时,它真的很烦人。

select count(1) into cnt from tab1 if cnt =0 then execute'Truncate table tab1'; end if;

我不是在寻找闪回。我需要检查截断表

最佳答案

正如@Boneist 所说,truncateDDL 语句,它隐式提交。如果您不确定在架构中执行的操作,并且只想在手动验证后提交,则不要截断,而是使用 DELETE

使用 DELETE 语句,您可以控制提交。话虽如此,TRUNCATE 会将高水位线重置为零,但是 DELETE 不会。即使您从表中删除所有行,Oracle 也会扫描 HWM 下的所有 block 。看看这个AskTom link .

如果您希望恢复被截断的数据,并且您使用的是 11gR2 及更高版本,则可以使用 Flashback support for DDL statements .

关于sql - 有没有办法检查截断表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30524415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com