關於primary key和foreign key的問題處理
今天碰到一個問題,在drop primary key的時候,提示ORA-02273的錯誤。
SQL> ALTER TABLE AR1_ACCOUNT DROP PRIMARY KEY;
ALTER TABLE AR1_ACCOUNT DROP PRIMARY KEY
*
ERROR at line 1:
ORA-02273: this unique/primary key is referenced by some foreign keys
透過下面的字典表查詢的關聯的表
SQL> SELECT con.constraint_name const_name, con.constraint_type const_type,
2 con.table_name, con.search_condition search_cond,
3 con.r_constraint_name r_const, col.table_name r_table,
col.column_name r_column
FROM user_constraints con, user_cons_columns col
WHERE col.constraint_name = con.r_constraint_name 4 5 6
7 AND col.table_name='AR1_ACCOUNT';
CONST_NAME C TABLE_NAME SEARCH_COND R_CONST R_TABLE R_COLUMN
------------------------------ - ------------------------------ -------------------- ------------------------------ ------------------------------ --------------------
AR3_GL_UNBILLED_REV_1FK R AR3_GL_UNBILLED_REV AR1_ACCOUNT_PK AR1_ACCOUNT ACCOUNT_ID
到此為止,我想為了保險起見,先把表AR3_GL_UNBILLED_REV的foreign key disable以後,再來drop這個表AR1_ACCOUNT 的primary key
使用alter table xxxx disable constraint xxxx;
執行成功了,但是drop primary key的時候還是提示錯誤 ORA-02273
沒辦法,看來disable不行,那隻能drop了,為了保險起見,先來spool一下建立constraint 的ddl 語句,但是呼叫時,又出現了問題。
SQL> SELECT DBMS_METADATA.GET_DDL('CONSTRAINT','AR3_GL_UNBILLED_REV_1FK')FROM DUAL;
ERROR:
ORA-31603: object "AR3_GL_UNBILLED_REV_1FK" of type CONSTRAINT not found in
schema "TEST"
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 105
ORA-06512: at "SYS.DBMS_METADATA", line 3149
ORA-06512: at "SYS.DBMS_METADATA", line 4787
ORA-06512: at line 1
查詢網上所說,有的人說可能是許可權問題,賦予select_catalog_owner許可權就好了。但是很奇怪的,怎麼試都不行。
最後查了下大家的反饋,確定這是一個bug.這也是dbms_metadata的一個一個限制,在11g版本這個問題依然存在。
最後做了一個表的ddl,這樣就包含了foreign key的資訊
然後drop了foreign key的constraint之後,drop primary key的操作就可以了繼續了。
在指令碼最後,需要記得重建那個foreign key.
SQL> ALTER TABLE AR3_GL_UNBILLED_REV ADD CONSTRAINT AR3_GL_UNBILLED_REV_1FK FOREIGN KEY (ACCOUNT_ID) REFERENCES AR1_ACCOUNT(ACCOUNT_ID);
Table altered.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-762912/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle資料庫primary key和unique key的異同Oracle資料庫
- sql primary key procedureSQL
- mysql中key 、primary key 、unique key 與index區別MySqlIndex
- imp 匯入遇到 FK (Foreign Key) 導致錯誤處理
- 如何處理redis叢集中hot key和big keyRedis
- 關於git的ssh-key:解決本地多個ssh-key的問題Git
- SQL FOREIGN KEY 約束SQL
- ORA-07445[dbgrmqmqpk_query_pick_key()]問題處理MQ
- JBoss中cmr時複合關鍵字類的foreign keys mapping問題APP
- Flutter : 關於 KeyFlutter
- unique index與primary key的區別Index
- ios手機處理keyup事件時的相容性問題iOS事件
- Redis 如何處理大 KeyRedis
- SQL Server Primary Key ConstraintsSQLServerAI
- foreign key的一些總結
- imp 匯入 FK (Foreign Key) 導致資料不能正確匯入處理
- 簡單分析MySQL中的primary key功能MySql
- mysql 使用foreign key(外來鍵)MySql
- HBase高階特性、rowkey設計以及熱點問題處理
- mysql啟動和關閉外來鍵約束的方法(FOREIGN_KEY_CHECKS)MySql
- 關於sequence問題的緊急處理
- 關於處理按鍵長按不用onKeyLongPress的另一種解決方案
- [轉] mysql 外來鍵(Foreign Key)的詳解和例項MySql
- 【SQL】15 SQL 約束(Constraints)、NOT NULL 約束、UNIQUE 約束、PRIMARY KEY 約束、FOREIGN KEY 約束、CHECK 約束、DEFAULT約束SQLAINull
- SAP gateway處理multiple key的邏輯Gateway
- mysql : repair with keycache 的一個處理MySqlAI
- 關於strace 工具處理問題技巧
- Flashback table with foreign key constraint.AI
- Redshift關於SORTKEY排序鍵、DISTKEY分配鍵的總結排序
- 關於介面返回BOM頭處理的問題
- Redis 大key(bigkey)問題的排查與解決方案Redis
- 詳解外來鍵約束(foreign key)
- 關於HashMap的key重寫hashcode和equals的理解HashMap
- js keyup、keypress和keydown事件JS事件
- 如何證明INNODB輔助索引葉子結點KEY值相同的按照PRIMARY KEY排序索引排序
- ALTER TABLE causes auto_increment resulting key 'PRIMARY'REM
- keycloak~關於session idle和session max的解釋Session
- go 處理 jsonArray 無 key 的 JSON 串GoJSON