PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Какво е името на ограничението по подразбиране в PostgreSQL?

Проблем:

Искате да знаете имената по подразбиране на ограниченията в таблица в PostgreSQL.

Пример:

В нашата база данни създаваме две таблици, country и student , със следните ограничения:PRIMARY KEY (колоната id в таблиците country и student ), FOREIGN KEY (колоната country_id в таблицата student ), DEFAULT (колоната name в таблицата student ), UNIQUE (колоната name в таблицата country и колоната personal_number в таблицата student ) и CHECK (колоната age в таблицата student ).

Решение:

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)
);

Нека покажем как PostgreSQL наименува ограниченията на тези таблици по подразбиране. Използвайте тази заявка, за да ги видите:

SELECT conname, contype
FROM pg_catalog.pg_constraint;

Ето резултата:

conname contype
country_pkey p
ключ_на_държава u
проверка на_възрастта на студента c
udent_pkey p
личен_номер_ключ на ученик u
udent_country_id_fkey f

Дискусия:

Когато създаваме нашите таблици, ние задаваме ограничения за някои колони. Въпреки това, ние не уточняваме имената за тези ограничения, така че те са именувани по подразбиране в PostgreSQL. Как се генерират имената по подразбиране за ограничения?

В PostgreSQL типовете ограничения по подразбиране са p , f , u и c .

PRIMARY KEY е именуван по подразбиране с името на таблицата, долна черта (‘_ “) и „pkey ’. В нашата таблица с резултати по-горе можете да видите два PRIMARY KEY имена (напишете „p ’) – един с името country_pkey в country таблица и друг с името student_pkey в student таблица.

FOREIGN KEY се обозначава от типа на ограничението „f ’. Името му се генерира от името на текущата таблица, долна черта (‘_ ’), името на колоната, друго долно черта (‘_ “) и „fkey ’. В нашия пример името на ограничението за външния ключ е student_country_id_fkey , тъй като колоната country_id в таблицата student е външен ключ.

Името по подразбиране за CHECK ограничението е подобно на това на външния ключ, само че е от тип ограничение „c ’. В нашия пример колоната age в таблицата student има това ограничение, така че името на ограничението по подразбиране е student_age_check .

Името по подразбиране за UNIQUE ограничение (напишете „u ’) е името на таблицата, долна черта (‘_ “), името на колоната, друго долно черта (‘_ “) и „key ’. В нашия пример таблицата student има UNIQUE ограничение с име student_personal_number_key . За множество колони в ограничение името следва подобна конвенция, но съдържа имената на всички колони в дефиницията на ограничението.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Извършване на промени в топологията на репликация за PostgreSQL

  2. Как да конвертирам цяло число в низ като част от заявка на PostgreSQL?

  3. Върнете идентификатора, ако съществува ред, INSERT в противен случай

  4. Индекс на долните букви на Flask-SQLAlchemy - функция за пропускане, не се поддържа от отражението на SQLAlchemy

  5. Основно наблюдение на PostgreSQL – част 3