Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Korzystanie z daty w ograniczeniu sprawdzającym, Oracle

Niestety ograniczenie sprawdzające nie może odwoływać się do funkcji takiej jak SYSDATE. Będziesz musiał utworzyć wyzwalacz, który sprawdzi te wartości, gdy wystąpi DML, tj.

CREATE OR REPLACE TRIGGER trg_check_dates
  BEFORE INSERT OR UPDATE ON table1
  FOR EACH ROW
BEGIN
  IF( :new.CloseDate <= SYSDATE )
  THEN
    RAISE_APPLICATION_ERROR( -20001, 
          'Invalid CloseDate: CloseDate must be greater than the current date - value = ' || 
          to_char( :new.CloseDate, 'YYYY-MM-DD HH24:MI:SS' ) );
  END IF;
  IF( :new.CloseDate > add_months(SYSDATE,12) )
  THEN
    RAISE_APPLICATION_ERROR( -20002, 
         'Invalid CloseDate: CloseDate must be within the next year - value = ' || 
         to_char( :new.CloseDate, 'YYYY-MM-DD HH24:MI:SS' ) );
  END IF;
  IF( :new.StartDate <= add_months(:new.CloseDate,24) )
  THEN
    RAISE_APPLICATION_ERROR( -20002, 
          'Invalid StartDate: StartDate must be within 24 months of the CloseDate - StartDate = ' || 
          to_char( :new.StartDate, 'YYYY-MM-DD HH24:MI:SS' ) ||
          ' CloseDate = ' || to_char( :new.CloseDate , 'YYYY-MM-DD HH24:MI:SS' ) );
  END IF;
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. Jak działa podzapytanie w instrukcji select w oracle?

  2. Jak zainstalować bazę danych Oracle w systemie Windows

  3. Czy ograniczenia klucza obcego wpływają na przekształcenia zapytań w Oracle?

  4. Zamiana cyfr/liczb w słowach na walutę INR (rupie indyjskie) w Oracle PL/SQL

  5. Zamieszanie w strefie czasowej Oracle 10g