oracleはテーブルの制約情報をチェックし、制約を有効および無効にします.


テーブルの制約情報を確認します.
SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE,SEARCH_CONDITION FROM USER_CONSTRAINTS
WHERE TABLE_NAME='  ';

実行結果:
CONSTRAINT_NAME       C  SEARCH_CONDITION
------------------------------------- ----- ------------------------------------
SYS_ C003111               C "    " IS NOT NULL
SYS_C003112               C "     " IS NOT NULL
SYS_C003113               C LENGTH(     )=2
SYS_C003114               C   >0
PK_2                      P
YS_1                      U
FK_1                      R

説明:図書表には7つの制約条件があり、1つのPRIMARY KEY(P)制約PK_2,一つのFOREGN KEY(R)拘束FK_1,UNIQUE(R)拘束YS_1と4個のCHECK(C)拘束SYS_C003111、SYS_C003112、SYS_C003113
とSYS_C 003114,4個のCHECK制約の名前はシステムによって命名された.
制約の有効化と無効化
コンストレイントの役割は、データの整合性を保護することですが、コンストレイントの条件が適用されなくなったり、必要がなくなったりすることがあります.このコンストレイントがまだ機能している場合、データのエクスポートやインポート時にコンストレイントを一時的に閉じるなど、操作の効率に影響します.この場合、次のコマンドでコンストレイントを閉じるか開くことができます.
制約を無効にするには、次の手順に従います.
ALTER TABLE    DISABLE CONSTRANT    ;

制約を有効にするには、次の手順に従います.
ALTER TABLE    ENABLE CONSTRANT    ;

図書表の数量検査を無効にする.
ステップ1:拘束条件SYS_C 003114(数量>0)失効:
ALTER TABLE    DISABLE CONSTRAINT SYS_C003114;

実行結果:
テーブルが変更されました.
手順2:変更数0:
UPDATE    SET   =0 WHERE     ='A0001';

実行結果:
1行が更新されました.
ステップ3:制約条件SYS_C 003114有効:
ALTER TABLE    ENABLE CONSTRAINT SYS_C003114;

実行結果:
ERRORは1行目にあります.
ORA-02293:検証不可(SCOTT.SYS_C 003114)-検査制約違反
続行:
UPDATE    SET   =5 WHERE     ='A0001';

実行結果:
1行が更新されました.
続行:
ALTER TABLE    ENABLE CONSTRAINT SYS_C003114;

実行結果:
テーブルが変更されました. 
手順1で名前をSYS_にするC 003114(数量>0)の検査条件は一時的に失効するため、ステップ2第1条の記録数を0に変更してから成功する.ステップ3で制約条件を再有効にしますが、テーブルにデータがあるため制約条件を満たしていないため、エラーが発生し、最初のレコードの数を5に変更することで制約条件を再有効にします.
黒い髪:http://heisetoufa.iteye.com/