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

関数を呼び出す制約を確認するOracleSQLDeveloper

    いいえ、それはできません。チェック制約の制限を参照してください:

    • ユーザー定義関数の呼び出し

    ただし、仮想列を使用して回避策を作成できます

    ALTER TABLE tbl_AccountAuthentications ADD (fnCheck NUMBER GENERATED ALWAYS AS (fnCheckValid(accountid_fk)) VIRTUAL);
    
    
    ALTER TABLE tbl_AccountAuthentications
    ADD CONSTRAINT chkCheckvalid CHECK(fnCheck <= 1);
    

    関数はDETERMINISTICである必要があることに注意してください。そうでない場合、関数は機能しません。 Oracleは、関数が実際に決定論的であるかどうかを検証せず、キーワードをチェックするだけです。これは許可されています(まったく意味がありませんが):

    CREATE OR REPLACE FUNCTION DET_FUNCTION RETURN NUMBER DETERMINISTIC IS 
    BEGIN 
        RETURN DBMS_RANDOM.RANDOM();
    END;
    /
    


    1. RHEL8にMariaDB10をインストールする方法

    2. (大きい?)数の値に対するMySQLINオペレーターのパフォーマンス

    3. MySQLで外部キー制約を一時的に無効にするにはどうすればよいですか?

    4. SQLでコメントする方法