sql >> Database >  >> RDS >> PostgreSQL

Wat is de standaardnaam van de beperking in PostgreSQL?

Probleem:

U wilt de standaardnamen van beperkingen in een tabel in PostgreSQL weten.

Voorbeeld:

In onze database maken we twee tabellen, country en student , met de volgende beperkingen:PRIMARY KEY (de kolom id in de tabellen country en student ), FOREIGN KEY (de kolom country_id in de tabel student ), DEFAULT (de kolom name in de tabel student ), UNIQUE (de kolom name in de tabel country en de kolom personal_number in de tabel student ), en CHECK (de kolom age in de tabel student ).

Oplossing:

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

Laten we laten zien hoe PostgreSQL de beperkingen van deze tabellen standaard benoemt. Gebruik deze zoekopdracht om ze te bekijken:

SELECT conname, contype
FROM pg_catalog.pg_constraint;

Hier is het resultaat:

conname contype
country_pkey p
country_name_key u
student_age_check c
student_pkey p
student_personal_number_key u
student_country_id_fkey f

Discussie:

Wanneer we onze tabellen maken, stellen we beperkingen in voor sommige kolommen. We specificeren echter geen namen voor deze beperkingen, dus ze worden standaard genoemd in PostgreSQL. Hoe worden de standaardnamen voor beperkingen gegenereerd?

In PostgreSQL zijn de standaard typen beperkingen p , f , u , en c .

De PRIMARY KEY wordt standaard genoemd met de tabelnaam, een onderstrepingsteken ('_ ’), en ‘pkey ’. In onze resultatentabel hierboven ziet u twee PRIMARY KEY namen (typ ‘p ’) – één met de naam country_pkey in het country tabel en een andere met de naam student_pkey in de student tafel.

EEN FOREIGN KEY wordt aangegeven door het type beperking 'f ’. De naam wordt gegenereerd door de naam van de huidige tabel, een onderstrepingsteken ('_ ’), de kolomnaam, een ander onderstrepingsteken (‘_ ’), en ‘fkey ’. In ons voorbeeld is de naam van de externe sleutelbeperking student_country_id_fkey , omdat de kolom country_id in de tabel student is een externe sleutel.

De standaardnaam voor een CHECK beperking is vergelijkbaar met die van een externe sleutel, alleen is deze van het beperkingstype 'c ’. In ons voorbeeld is de kolom age in de tabel student heeft deze beperking, dus de standaardnaam van de beperking is student_age_check .

De standaardnaam voor een UNIQUE beperking (typ 'u ’) is de tabelnaam, een onderstrepingsteken (‘_ ’), de kolomnaam, een ander onderstrepingsteken (‘_ ’), en ‘key ’. In ons voorbeeld is de tabel student heeft een UNIQUE beperking met de naam student_personal_number_key . Voor meerdere kolommen in een beperking volgt de naam een ​​vergelijkbare conventie, maar bevat de namen van alle kolommen in de definitie van de beperking.


  1. Controleer het parametertype van een partitiefunctie in SQL Server (T-SQL)

  2. Hoe het huidige transactieniveau te vinden?

  3. Het INFORMATIESCHEMA van MySQL opvragen:waarom? Hoe?

  4. SSIS Excel-import forceren van onjuist kolomtype