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

Oracleチェック制約

    私はOracleを持っていませんが、PostgreSQLと最初の例(IS_DISABLED)で簡単なテストを行いました。 NULLであること およびDISABILITY_INCOME_TYPE_ID 1):

    postgres=> select (null is null and 1 is null);
     ?column?
    ----------
     f
    (1 registro)
    
    postgres=> select (null is null and 1 is null) or (null = 0 and 1 is null);
     ?column?
    ----------
     f
    (1 registro)
    
    postgres=> select (null is null and 1 is null) or (null = 0 and 1 is null) or (null = 1);
     ?column?
    ----------
    
    (1 registro)
    

    ここでは、この場合、式(少なくともPostgreSQLでは)がNULLを返すことがはっきりとわかります。 マニュアル から 、

    したがって、OracleがPostgreSQLと同じように動作する場合、チェック制約は合格になります。 。

    これが当てはまるかどうかを確認するには、NULLシェナニガンを明示的にチェックして回避し、機能するかどうかを確認します。

    CHECK ((IS_DISABLED IS NULL AND DISABILITY_INCOME_TYPE_ID IS NULL)
        OR (IS_DISABLED IS NOT NULL AND IS_DISABLED = 0 AND DISABILITY_INCOME_TYPE_ID IS NULL)
        OR (IS_DISABLED IS NOT NULL AND IS_DISABLED = 1));
    


    1. カンマ区切りの値をOracleの列に分割します

    2. イメージ可能タイプがポリモーフィックアソシエーションに設定されていません

    3. Oracle 11gのオブジェクトタイプ列から選択するにはどうすればよいですか?

    4. jquery phpは、ページを更新せずにmysqlにデータを挿入します