sql >> Databáze >  >> RDS >> PostgreSQL

Jaký je výchozí název omezení v PostgreSQL?

Problém:

Chcete znát výchozí názvy omezení v tabulce v PostgreSQL.

Příklad:

V naší databázi vytvoříme dvě tabulky, country a student , s následujícími omezeními:PRIMARY KEY (sloupec id v tabulkách country a student ), FOREIGN KEY (sloupec country_id v tabulce student ), DEFAULT (sloupec name v tabulce student ), UNIQUE (sloupec name v tabulce country a sloupec personal_number v tabulce student ) a CHECK (sloupec age v tabulce student ).

Řešení:

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

Ukážeme si, jak PostgreSQL standardně pojmenovává omezení těchto tabulek. Chcete-li je zobrazit, použijte tento dotaz:

SELECT conname, contype
FROM pg_catalog.pg_constraint;

Zde je výsledek:

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

Diskuse:

Když vytváříme naše tabulky, nastavujeme omezení pro některé sloupce. Názvy těchto omezení však neuvádíme, takže jsou v PostgreSQL pojmenovány standardně. Jak se generují výchozí názvy pro omezení?

V PostgreSQL jsou výchozí typy omezení p , f , u a c .

PRIMARY KEY je ve výchozím nastavení pojmenován názvem tabulky, podtržítkem („_ “) a „pkey '. V naší výsledkové tabulce výše můžete vidět dva PRIMARY KEY jména (zadejte ‘p ’) – jeden pod názvem country_pkey v country tabulka a další pod názvem student_pkey v student tabulka.

FOREIGN KEY je označeno typem omezení ‘f '. Jeho název je generován názvem aktuální tabulky, podtržítkem („_ ’), název sloupce, další podtržítko („_ “) a „fkey '. V našem příkladu je název omezení cizího klíče student_country_id_fkey , protože sloupec country_id v tabulce student je cizí klíč.

Výchozí název pro CHECK omezení je podobné jako u cizího klíče, pouze je typu omezení ‘c '. V našem příkladu sloupec age v tabulce student má toto omezení, takže výchozí název omezení je student_age_check .

Výchozí název pro UNIQUE omezení (zadejte ‘u ’) je název tabulky, podtržítko („_ ’), název sloupce, další podtržítko („_ “) a „key '. V našem příkladu tabulka studentUNIQUE omezení s názvem student_personal_number_key . Pro více sloupců v omezení se název řídí podobnou konvencí, ale obsahuje názvy všech sloupců v definici omezení.


  1. Jak funguje funkce Time() v SQLite

  2. 4 tipy pro spuštění diagnostiky serveru SQL

  3. Události čekání serveru SQL -3

  4. 2 způsoby, jak vytvořit tabulku, pokud na serveru SQL neexistuje