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

SPRAWDŹ OGRANICZENIA w Oracle SQL

Użyj ograniczenia poza linią:

CREATE TABLE Goods_In_Wagon (
  Goods_ID NUMBER(whatever),
  Wagon_ID NUMBER(whatever),
  Total_Weight NUMBER(whatever),
  CONSTRAINT Check_WagID_Weight
    CHECK (Wagon_ID NOT BETWEEN 90 AND 99 OR Total_Weight > 10)
)

Jeśli Wagon_ID jest nie między 90 a 99, ograniczenie mija. Jeśli wynosi od 90 do 99, Total_Weight musi być większa niż 10.

Takie ograniczenie poza linią pozwala zastosować logikę ograniczenia na poziomie wiersza, co oznacza, że ​​może użyć dowolnej wartości kolumny.

Uzupełnienie Oto jak obsłużyć zaktualizowane pytanie z zakresami Wagon_ID i Total_Weight . Prawdopodobnie są inne sposoby, ale wydawało mi się to „najczystsze”, co oznacza, że ​​osobiście najłatwiej było mi przeczytać :)

CREATE TABLE Goods_In_Wagon(
  Goods_ID NUMBER(whatever),
  Wagon_ID NUMBER(whatever),
  Total_Weight NUMBER(whatever),
  CONSTRAINT Check_WagID_Weight
    CHECK (
      (Wagon_ID < 90) OR
      (Wagon_ID BETWEEN 90 AND 99 AND Total_Weight > 10) OR
      (Wagon_ID BETWEEN 100 AND 110 AND Total_Weight > 20) OR
      (Wagon_ID BETWEEN 111 AND 120 AND Total_Weight > 30) OR
      (Wagon_ID > 120)
    )
)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Niewystarczające uprawnienia podczas tworzenia tabel w Oracle SQL Developer

  2. Podkreślenie nie działa w wyroczni jak klauzula

  3. Liczba SQL według grupy

  4. Jak dodać wiodące zero do liczby w zapytaniu Oracle SQL?

  5. SQL:Po połączeniu tabel funkcja SUM() zwraca błędną wartość