Ograniczenie (ang. constraint) to reguła, którą definiujesz a jej zadaniem jest ochrona tabeli przed bałaganem jaki może powstać w wyniku dodawania błędych lub niekompletnych danych.
Typy ograniczeń
W Oraclu mamy pięć typów ograniczeń, które możemy zdefiniować, są to:
- Klucz Główny (ang. Primary Key): zapewnia nam, że dana kolumna lub zestaw kolumn posiada wartości unikalne i nie mogą być nullem. Najcześciej stosowany jako identyfikator wiersza.
- Klucz Obcy (ang. Foreign Key Constraint): Zapewnia nam, że wartości w kolumnie lub zestawie kolumn łączą się z wartościami w tabeli referencyjnej.
- Unikaność (ang. Unique Constraint): zapewnia nam, że wartości w danej kolumnie są unikalne.
- Brak nulli (Not Null Constraint): zapewnia nam, że wartości w danej kolumnie nie mogą być nullem.
- Warunek (ang. Check Constraint):zapewnia nam, że wartości spełniają jakiś określony warunek.
Kilka sposobów
Sprawdzenie ograniczeń na tabeli możemy wykonać na wiele sposobów. W tym poście pokaże Ci jak to możesz zrobić za pomocą:
- SQL Developer
- DBeaver
- Zapytania SQL
SQL Developer
Kliknij na wybraną tabele z menu rozwijanego po lewej stronie, a następnie wybierz zakładę “Constraints”. Na potrzeby tego posta utworzyłem table TEST_TABLE i dodałem do niej klucz główny na ID oraz ograniczenie Not Null na kolumnie AGE.
DBeaver
W DBeaver wystarczy rozwiąnć zakładkę “Constraints” w drzewie pod wybraną tabelą.
Zapytanie SQL
Na koniec przedstawię Ci w jaki sposób pobrać wszystkie ograniczenia dla wskazanej tabeli. To zapytanie może się okazać również pomocne, gdy potrzebujemy dostać informację o wszystkich ogrniczeniach w ramach bazy.
SELECT ACC.TABLE_NAME, ACC.COLUMN_NAME, ACC.POSITION, AC.STATUS, AC.OWNER, AC.CONSTRAINT_TYPE FROM ALL_CONSTRAINTS AC, ALL_CONS_COLUMNS ACC WHERE ACC.TABLE_NAME = 'TEST_TABLE' AND AC.CONSTRAINT_NAME = ACC.CONSTRAINT_NAME AND AC.OWNER = ACC.OWNER;
Powyższe zapytanie oczywiście warto sobie zmodyfikować, aby jak najlepiej było dopasowane do naszych potrzeb. W przypadku większej ilości tabel warto zastosować filtrowanie lub sortowanie np. po kolumnie OWNER, POSITION, CONSTRAINT_TYPE itd.