oracleはテーブルの制約情報をチェックし、制約を有効および無効にします.
テーブルの制約情報を確認します.
実行結果:
説明:図書表には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制約の名前はシステムによって命名された.
制約の有効化と無効化
コンストレイントの役割は、データの整合性を保護することですが、コンストレイントの条件が適用されなくなったり、必要がなくなったりすることがあります.このコンストレイントがまだ機能している場合、データのエクスポートやインポート時にコンストレイントを一時的に閉じるなど、操作の効率に影響します.この場合、次のコマンドでコンストレイントを閉じるか開くことができます.
制約を無効にするには、次の手順に従います.
制約を有効にするには、次の手順に従います.
図書表の数量検査を無効にする.
ステップ1:拘束条件SYS_C 003114(数量>0)失効:
実行結果:
テーブルが変更されました.
手順2:変更数0:
実行結果:
1行が更新されました.
ステップ3:制約条件SYS_C 003114有効:
実行結果:
ERRORは1行目にあります.
ORA-02293:検証不可(SCOTT.SYS_C 003114)-検査制約違反
続行:
実行結果:
1行が更新されました.
続行:
実行結果:
テーブルが変更されました.
手順1で名前をSYS_にするC 003114(数量>0)の検査条件は一時的に失効するため、ステップ2第1条の記録数を0に変更してから成功する.ステップ3で制約条件を再有効にしますが、テーブルにデータがあるため制約条件を満たしていないため、エラーが発生し、最初のレコードの数を5に変更することで制約条件を再有効にします.
黒い髪:http://heisetoufa.iteye.com/
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/