摘要:PLSQL - 取得各資料表的 PK 與 FK,並且啟用及停止 FK
本篇主要是分享如何在 Oracle 中找到資料表中有哪一些 PK 與 FK,並且針對 FK 做啟用及停用。那獲取到資料表中有哪一些 PK 與 FK 有啥好處呢!? 其實這對於管理者或者要快速查找時,會有很大的幫助,比起在茫茫資料表撈針,這種方式比較好檢閱;而啟用與停用 FK,主要是要刪除一些資料時用到,當然本篇不提倡停用 FK,但萬不得已時要用還是得用的,以下就來看看唄...
Code:
select * from user_constraints
Column | Datatype | NULL | Description |
---|---|---|---|
OWNER |
VARCHAR2(30) |
NOT NULL |
Owner of the constraint definition |
CONSTRAINT_NAME |
VARCHAR2(30) |
NOT NULL |
Name of the constraint definition |
CONSTRAINT_TYPE |
VARCHAR2(1) |
Type of constraint definition:
|
|
TABLE_NAME |
VARCHAR2(30) |
NOT NULL |
Name associated with the table (or view) with constraint definition |
SEARCH_CONDITION |
LONG |
Text of search condition for a check constraint | |
R_OWNER |
VARCHAR2(30) |
Owner of table referred to in a referential constraint | |
R_CONSTRAINT_NAME |
VARCHAR2(30) |
Name of the unique constraint definition for referenced table | |
DELETE_RULE |
VARCHAR2(9) |
Delete rule for a referential constraint (CASCADE or NO ACTION ) |
|
STATUS |
VARCHAR2(8) |
Enforcement status of constraint (ENABLED or DISABLED ) |
|
DEFERRABLE |
VARCHAR2(14) |
Whether the constraint is deferrable | |
DEFERRED |
VARCHAR2(9) |
Whether the constraint was initially deferred | |
VALIDATED |
VARCHAR2(13) |
Whether all data obeys the constraint (VALIDATED or NOT VALIDATED ) |
|
GENERATED |
VARCHAR2(14) |
Whether the name of the constraint is user or system generated | |
BAD |
VARCHAR2(3) |
A YES value indicates that this constraint specifies a century in an ambiguous manner. To avoid errors resulting from this ambiguity, rewrite the constraint using the TO_DATE function with a four-digit year.
See Also: the |
|
RELY |
VARCHAR2(4) |
Whether an enabled constraint is enforced or unenforced.
See Also: the constraints in Oracle Database SQL Reference |
|
LAST_CHANGE |
DATE |
When the constraint was last enabled or disabled | |
INDEX_OWNER |
VARCHAR2(30) |
Name of the user owning the index | |
INDEX_NAME |
VARCHAR2(30) |
Name of the index (only shown for unique and primary-key constraints) | |
INVALID |
VARCHAR2(7) |
Whether the constraint is invalid | |
VIEW_RELATED |
VARCHAR2(14) |
Whether the constraint depends on a view |
啟用及停用 FK
Code:
--啟用
ALTER TABLE TABLE NAME ENABLE NOVALIDATE CONSTRAINT FK NAME;
--停用
ALTER TABLE TABLE NAME DISABLE NOVALIDATE CONSTRAINT FK NAME;
參考:
ALL_CONSTRAINTS
45.6.1 約束:USER_CONSTRAINTS
oracle 查看主外件約束
SQL: 設定約束條件