注意事項
1.在oracle中資料刪除後還能回滾是因為它把原始資料放到了undo表空間。
2.dml語句使用undo表空間,ddl語句不使用undo, 而delete是dml語句,truncate是ddl語句,另外ddl語句是隱式提交.所以truncate操用不能回滾,而delete操作可以。
truncate與delete相同點:
1 在oracle中刪除表中的資料的方法有delete,truncate
2 它們都是刪除表中的資料,而不能刪除表結構.
truncate與delete之間的區別
1: delete 可刪除整個表的資料也可刪除表中某一條或n條滿足條件的資料,刪除的資料可恢復.命令完成就可回滾.
2: truncate只能刪除整個表的資料,自動提交.命令完成不可回滾.truncate的速度也比delete要快得多,truncate之後,table的hwm退回到 initial和next的位置(預設)delete 則不可以.
3: truncate 只能對table,delete 可以是table,view,synonym
4: truncate table 的物件必須是本模式下的,或者有drop any table的許可權 而 delete 則是物件必須是本模式下的,或被授予 delete on schema.table 或delete any table的許可權.
一 :truncate
語法:
truncate table table_name;
二 :delete
語法:
delete table_name;或者delete from table;
三:重要區別
delete在plsql中是可執行的,但是truncate在plsql中不能執行,只能用動態sql執行,如下:
sql**
execute immediate 'truncate table 表名';
注意最後一點,前面因為不知道truncate是ddl語言,在plsql中用法,結果寫過程時。
報錯:create or replace procedure procename as
begin
truncate table table_name;
end procename;
可編譯:
create or replace procedure procename as
begin
execute immediate 'truncate table table_name;
end procename;
truncate與delete的區別
truncate與delete的區別 truncate table命令將快速刪除資料表中的所有記錄,但保留資料表結構。這種快速刪除與delete from 資料表的刪除全部資料表記錄不一樣,delete命令刪除的資料將儲存在系統回滾段中,需要的時候,資料可以回滾恢復,而truncate命令刪除的資料...
Delete與Truncate以及Drop的區別
相同點 truncate和不帶where子句的delete,以及drop都會刪除表內的資料 不同點 1.truncate和 delete只刪除資料不刪除表的結構 定義 drop語句將刪除表的結構被依賴的約束 constrain 觸發器 trigger 索引 index 依賴於該錶的儲存過程 函式將保...
Truncate與Delete的區別
truncate table 在功能上與不帶 where 子句的 delete 語句相同 二者均刪除表中的全部行。但 truncate table 比 delete 速度快,且使用的系統和事務日誌資源少。delete 語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項。truncate tabl...