PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jaka jest domyślna nazwa ograniczenia w PostgreSQL?

Problem:

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

Przykład:

W naszej bazie danych tworzymy dwie tabele, country i student , z następującymi ograniczeniami:PRIMARY KEY (kolumna id 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) NOT NULL 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 PostgreSQL domyślnie nazywa ograniczenia tych tabel. Użyj tego zapytania, aby je zobaczyć:

SELECT conname, contype
FROM pg_catalog.pg_constraint;

Oto wynik:

conname typ
country_pkey p
klucz_nazwa_kraju u
student_age_check c
student_pkey p
student_personal_number_key u
student_country_id_fkey f

Dyskusja:

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

W PostgreSQL domyślnymi typami ograniczeń są p , f , u i c .

PRIMARY KEY jest domyślnie nazwany nazwą tabeli, podkreśleniem („_ ”) i „pkey ”. W powyższej tabeli wyników możesz zobaczyć dwa PRIMARY KEY nazwy (wpisz „p ’) – jeden o nazwie country_pkey w country tabela i inny o nazwie student_pkey w student tabela.

FOREIGN KEY jest wskazywany przez typ ograniczenia „f ”. Jego nazwa jest generowana przez nazwę bieżącej tabeli, podkreślenie („_ ’) , nazwa kolumny, kolejne podkreślenie („_ ”) i „fkey ”. W naszym przykładzie nazwa ograniczenia klucza obcego to student_country_id_fkey , ponieważ kolumna country_id w tabeli student jest kluczem obcym.

Domyślna nazwa dla CHECK ograniczenie jest podobne do klucza obcego, tylko że jest typu ograniczenia „c ”. W naszym przykładzie kolumna age w tabeli student ma to ograniczenie, więc domyślna nazwa ograniczenia to student_age_check .

Domyślna nazwa dla UNIQUE ograniczenie (wpisz „u ’) to nazwa tabeli, podkreślenie („_ ”), nazwa kolumny, kolejne podkreślenie („_ ”) i „key ”. W naszym przykładzie tabela student ma UNIQUE ograniczenie o nazwie student_personal_number_key . W przypadku wielu kolumn w ograniczeniu nazwa jest zgodna z podobną konwencją, ale zawiera nazwy wszystkich kolumn w definicji ograniczenia.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmartwiony transakcją

  2. Nowe funkcje zgodności z Oracle w PostgresPlus Advanced Server 9.3Beta

  3. Jak zainstalować tylko narzędzia klienckie dla PostgreSQL w systemie Windows?

  4. Railsy:Błąd podczas instalacji pg gem

  5. Zaawansowane dopasowywanie partycji do łączenia partycji