truncate 命令使用
今天使用truncate清空表時報錯了:
SQL> truncate table ref_set;
truncate table ref_set
ORA-02266: 表中的唯一/主鍵被啟用的外來鍵引用
通過dba_constraints檢視,該表的主鍵被其他表所引用,因此無法truncate。即使從表中的資料被清空或者從來沒有過資料,也無法直接對被引用的表執行truncate操作。
解決方法:alter table tab_name disable constraint constraint_name;
說明:以前曾經聽過關於truncate的限制,但實際工作中由於用的比較少,漸漸忘了。
除了存在外來鍵約束而無法執行truncate外,還應該注意:truncate是ddl操作,如果在執行truncate過程中由其他使用者的dml操作沒有提交,truncate會觸發其提交操作。因此在併發比較高的系統中慎重使用truncate命令。
根據表名查詢有哪些外來鍵呼叫了該表中的列:
select a.table_name "被引用表",a.constraint_name "約束名",
b.constraint_name "外來鍵名",b.table_name "引用表" from dba_constraints a,dba_constraints b
where a.constraint_type='P' and a.owner=:COLUMN_NAME
and a.constraint_name=b.r_constraint_name;
以下直接產生禁用約束的語句:
select 'alter table '||b.table_name||'disable constraint '||b.constraint_name
from dba_constraints a,dba_constraints b
where a.constraint_type='P' and a.owner=:COLUMN_NAME
and a.constraint_name=b.r_constraint_name and a.table_name=:table_name;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26451536/viewspace-755444/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何在Linux中使用 Truncate 命令Linux
- 【Linux之truncate 命令用法】Linux
- TRUNCATE in postgresqlSQL
- 使用ODU恢復被truncate表的資料
- mv complate重新整理時使用DELETE OR TRUNCATE!delete
- MySQL truncate原理MySql
- 使用hellodba的工具恢復truncate表的資料
- 使用ODU恢復oracle被truncate的表資料Oracle
- oracle truncate table recover(oracle 如何拯救誤操作truncate的表)Oracle
- Diffrence Between delete and truncatedelete
- truncate 比 delete 慢delete
- drop、delete 與truncatedelete
- SQL – TRUNCATE vs DELETESQLdelete
- truncate操作巨慢
- 【TRUNCATE】在有外來鍵參照的表上無法使用TRUNCATE完成資料清理(ORA-02266)
- Truncate and data_object_idObject
- TRUNCATE資料恢復資料恢復
- truncate delete drop 區別delete
- truncate delete 的區別delete
- openGauss lo_truncate
- java命令--jmap命令使用Java
- 簡述truncate、delete和dropdelete
- Oracle Truncate表恢復(ODU)Oracle
- OGG 獲取truncate 操作
- Truncate,Delete,Drop的比較.delete
- truncate與delete的區別delete
- truncate 比 delete 慢的原因。delete
- 執行truncate在pl/sqlSQL
- truncate和delete 的區別delete
- partition table中truncate應用
- 表管理之四:刪除資料Delete與truncate的使用區別delete
- 分割槽表truncate慢處理
- Oracle大表清理truncate .. reuse storageOracle
- SQL truncate 、delete與drop區別SQLdelete
- oracle truncate 與 delete 的區別Oracledelete
- truncate,delete,drop的異同點delete
- 禁止客戶端 誤 truncate table客戶端
- truncate 和 delete 的效能對比delete