sql >> データベース >  >> RDS >> Oracle

理由/有用性は、OracleデータベースステートメントでENABLEキーワードを使用することです。

    Constraint doc

    CREATE TABLE "EVALUATION" (
        "EVALUATION_ID" NUMBER(20, 0) NOT NULL ENABLE,
    

    ENABLE/DISABLE 制約がオンまたはオフであることを示します。デフォルトでは、ENABLE 使用されます。

    ENABLE句 テーブル内のデータに制約を適用する場合は、ENABLEを指定します。

    無効条項 DISABLEを指定して、整合性制約を無効にします。無効にされた整合性制約は、有効な制約とともにデータディクショナリに表示されます。制約を作成するときにこの句を指定しない場合、Oracleは自動的に制約を有効にします。

    制約はデータの整合性を確保するために使用されますが、制約を無効にする必要があるシナリオがあります。

    Managing Integrity

    制約の無効化

    整合性制約によって定義されたルールを適用するには、制約を常に有効にする必要があります。ただし、次のパフォーマンス上の理由から、テーブルの整合性制約を一時的に無効にすることを検討してください。

    • 大量のデータをテーブルにロードする場合

    • テーブルに大規模な変更を加えるバッチ操作を実行する場合(たとえば、既存の番号に1000を追加してすべての従業員の番号を変更する場合)

    • 一度に1つのテーブルをインポートまたはエクスポートする場合

    3つのケースすべてで、整合性制約を一時的に無効にすると、特にデータウェアハウス構成で、操作のパフォーマンスが向上する可能性があります。

    制約が無効になっているときに、制約に違反するデータを入力することができます。したがって、前の箇条書きにリストされている操作のいずれかを完了した後は、常に制約を有効にする必要があります。

    整合性制約の効率的な使用:手順

    整合性制約状態を次の順序で使用すると、最高のメリットを確実に得ることができます。

    1. 状態を無効にします。

    2. 操作(ロード、エクスポート、インポート)を実行します。

    3. novalidate状態を有効にします。

      この順序で制約を使用する利点は次のとおりです。

      • ロックは保持されません。

      • すべての制約は、状態を同時に有効にすることができます。

      • 制約の有効化は並行して行われます。

      • テーブルでの同時アクティビティは許可されています。

    編集:

    問題は、なぜ明白なを使用するのかということです。 デフォルトでオンになっている場合のキーワード:

    私は言うでしょう:

    1. わかりやすくするために(PythonEIBTIルール明示的は暗黙的よりも優れています
    2. 完全性のために
    3. 個人の趣向やコーディング規約

    これは次と同じカテゴリです:

    CREATE TABLE tab(col INT NULL)
    

    なぜNULLを使用するのですか 列がデフォルトでnull許容の場合。




    1. Oracleでコンマ区切りの文字列を分割する方法

    2. RUまたはRUR?

    3. ON条件なしでmysqlJOINを使用するにはどうすればよいですか?

    4. SQL Serverのすべてのデータベースのすべてのテーブルを単一の結果セットに一覧表示するにはどうすればよいですか?