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

Jaka jest domyślna nazwa ograniczenia w Oracle?

Problem:

Chcesz poznać domyślne nazwy ograniczeń w tabeli w Oracle.

Przykład:

W naszej bazie danych tworzymy dwie tabele, country i student , z następującymi ograniczeniami:PRIMARY KEY (identyfikator kolumny w tabelach country i student ), FOREIGN KEY (kolumna country_id w tabeli student ), DEFAULT (kolumna name w tabeli student ), UNIQUE (kolumna name w tabeli country i kolumna personal_number w tabeli student ) i CHECK (kolumna age w tabeli student ).

Rozwiązanie:

CREATE TABLE country (
id int NOT NULL primary key,
name varchar(100) UNIQUE
);

CREATE TABLE student (
id int NOT NULL primary key,
name varchar(100) DEFAULT 'UNKNOWN',
personal_number varchar(100) UNIQUE,
age int CHECK(age>15),
country_id int,
FOREIGN KEY(country_id) references country(id)
);

Pokażmy, jak Oracle domyślnie nazywa ograniczenia tych tabel. Użyj tego zapytania, aby je zobaczyć:

select CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME
from USER_CONSTRAINTS
where TABLE_NAME='STUDENT' OR TABLE_NAME='COUNTRY';

Oto wynik:

CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME
SYS_C007376 R STUDENT
SYS_C007366 P KRAJ
SYS_C007374 P STUDENT
SYS_C007367 U KRAJ
SYS_C007375 U STUDENT
SYS_C007372 C STUDENT

Dyskusja:

Kiedy tworzymy nasze tabele, ustawiamy ograniczenia dla niektórych kolumn. Jednak nie określamy nazw tych ograniczeń, więc są one nazywane domyślnie. Jak generowane są domyślne nazwy ograniczeń?

W Oracle domyślna nazwa ograniczenia zaczyna się od nazwy użytkownika, po której następuje „_C ’ i numer kolejny. Typy ograniczeń to „C ’ (check ), ‘P ’ (klucz podstawowy), ‘U ” (unikalne ograniczenie) i „R ’ (klucz obcy). Wszystkie domyślne nazwy ograniczeń są generowane jako „SYS ”, „_ ’ i numer. Możesz zobaczyć nazwy domyślne w powyższej tabeli. Na przykład CHECK ograniczenie wieku kolumny w student tabela ma nazwę SYS_C007372 .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyświetlaj nazwy wszystkich ograniczeń dla tabeli w Oracle SQL

  2. Lepsza współbieżność w Oracle niż SQL Server?

  3. Odwróć w Oracle tę ścieżkę z/y/x do x/y/z

  4. Uzyskaj aktualny czas lokalny dowolnego kraju w PL/SQL

  5. Jak określić klauzulę IN w zapytaniu dynamicznym przy użyciu zmiennej?