Oracle
 sql >> база данни >  >> RDS >> Oracle

Проверете ограничение, извикване на функция Oracle SQL разработчик

Не, не можете да направите това, вижте Ограничения на ограниченията за проверка:

  • Извиквания към дефинирани от потребителя функции

Но можете да направите заобиколно решение с помощта на виртуални колони

ALTER TABLE tbl_AccountAuthentications ADD (fnCheck NUMBER GENERATED ALWAYS AS (fnCheckValid(accountid_fk)) VIRTUAL);


ALTER TABLE tbl_AccountAuthentications
ADD CONSTRAINT chkCheckvalid CHECK(fnCheck <= 1);

Забележете, функцията трябва да е ДЕТЕРМИНИСТИЧНА, в противен случай не работи. Oracle не проверява дали вашата функция всъщност е детерминистична, а просто проверява за ключовата дума. Това е позволено (въпреки че няма никакъв смисъл):

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да извика съхранена процедура в JDBC

  2. Как да създадете идентификатор с AUTO_INCREMENT на Oracle?

  3. Обработване на едновременната заявка, докато продължавате в базата данни на Oracle?

  4. Как мога да потвърдя, че базата данни е Oracle и каква версия използва SQL?

  5. Как да разделите низ в Oracle