PostgreSQL Begränsningar: Typer med exempel

⚡ Smart sammanfattning

PostgreSQL Begränsningar tillämpar sex inbyggda integritetsregler på databasnivå: UNIQUE, NOT NULL, CHECK, PRIMARY KEY, FOREIGN KEY och EXCLUSION. Lessons täcker syntax, exempel och när varje regel ska tillämpas.

  • 🛡️ Integrity regler: Blockerar ogiltiga data på databasnivå.
  • 🔑 Primärnyckel: UNIK plus INTE NULL; en per tabell.
  • 🔗 Främmande nyckel: Pekar på UNIK eller PRIMÄR NYCKEL någon annanstans.
  • KOLLA UPP: Boolesk kontroll per rad.
  • ???? INTE NULL: Avvisar NULL-värden.
  • 🎯 UTESLUTNING: UNIK med anpassade operatorer.

PostgreSQL begränsningar

Vad är begränsning?

Datatyper används för att begränsa vilken typ av information som kan lagras i en tabell. Men det finns två problem med detta tillvägagångssätt.

  • Fråga 1: Begränsningar som upprätthålls av datatyper är inte tillräckliga för vissa applikationer. Till exempel bör en kolumn som innehåller ett artikelpris endast acceptera positiva värden. Det finns dock ingen specifik datatyp som bara accepterar det positiva talet.
  • fråga 2: Du kanske vill begränsa informationen i en rad/kolumndata i förhållande till andra kolumner eller rader. Till exempel bör en tabell som innehåller artikelinformation endast ha en rad för varje unik kolumnrestriktion.

För att övervinna sådana problem och definiera dessa regler kan du använda begränsningsi PostgreSQL. Enkelt uttryckt är begränsningar regler som din data måste följa. Genom att lägga till tabellbegränsningar kan databassystemet framtvinga dataintegritet.

Därför, om en användare försöker lagra data i en kolumn som bryter mot en definierad begränsning, bör ett felmeddelande visas.

Sorts PostgreSQL begränsningar

Låt oss ta en titt på olika typer av PostgreSQL begränsning du kan skapa för att säkerställa datakorrekthet:

  • Unik
  • Inte Null
  • Kontrollera begränsning
  • Primärnyckel
  • Främmande nyckel
  • Utförandebegränsning

PostgreSQL Unik begränsning

Unika begränsningar hjälper dig att säkerställa att data som finns i en kolumn, eller en grupp av kolumnbegränsningar, är unik.

Exempelvis

CREATE TABLE Item(
Item_no integer UNIQUE,
Name text,
);

PostgreSQL NOT NULL Begränsning

En icke-null-begränsning definierar att en kolumn aldrig ska vara ett nullvärde. Denna typ av begränsning är mycket lik att skapa en kontrollbegränsning. Dock, PostgreSQL skapar en icke-null-begränsning, vilket är mer effektivt. Problemet med den här metoden är att du inte kan ge explicita namn till icke-null-begränsningar.

Inte null-begränsningen är inte en förinställd PostgreSQL standard och bör inte användas i bärbara applikationer. Den lades till senare PostgreSQL för att göra den kompatibel med något annat DBMS-system. Många använder det eftersom det gör det enkelt att växla mellan begränsningen i en skriptfil.

Syntax:

CREATE TABLE Item (
product no integer NULL, Item_name text NULL, Itm_price numeric NULL
);

PostgreSQL KONTROLLERA begränsning

En kontrollbegränsning hjälper dig att ange att värdet i någon kolumn måste vara ett booleskt uttryck.

Ocuco-landskapet PostgreSQL check constraint består av nyckelordet CHECK, som följs av ett uttryck inom parentes. Kontrollbegränsningen Postgres bör involvera kolumnen som bör begränsas, annars är det inte meningsfullt.

Syntax:

CREATE TABLE Item(
Item_id INTEGER PRIMARY KEY,
name VARCHAR(20),
Item_price NUMERIC CHECK(price>0)
);

Exempel:

CREATE TABLE Emp(
ID	INTEGER primary key,
First_name VARCHAR(20),
Last_name VARCHAR(20),
Gender CHAR(l) check(gender gender='M'),
Salary INTEGER NOT NULL,
Dept_Num INTEGER
);
CREATE TABLE ITEM(
Id INTEGER PRIMARY KEY,
name VARCHAR(15),
price numeric CHECK (price > 0)
);

PostgreSQL PRIMÄR NYCKEL Begränsning

En primärnyckelbegränsning låter dig använda en kolumn eller grupp av kolumner som en unik identifierare för rader i tabellen. För att definiera primärnyckelbegränsningar bör dina deklarerade värden vara både unika och inte null. Detta tillåter två tabelldefinitioner att acceptera samma data.

Syntax:

Create Table Item(
Item_no, integer PRIMARY KEY,
Item_name text,
Item_Price numeric
);

Exempel 1:

CREATE TABLE Employee(
ID INTEGER PRIMARY KEY
Fname VARCHAR(20),
Lname VARCHAR(20),
Gender CHAR(l),
Salary INTEGER NOT NULL, Dept INTEGER, UNIQUE(FNAME, LNAME)
);

Exempel 2:

CREATE TABLE first(
A1 INTEGER. A2 INTEGER. PRIMARY KEY (tl)
);
Second way CREATE TABLE test( tl INTEGER PRIMARY KEY, t2 INTEGER.
);

Exempel 3:

CREATE TABLE Items (
Item_no integer UNIQUE NOT NULL, name text, price numeric
CREATE TABLE Items (
Items_no no integer PRIMARY KEY, name text, price numeric

PostgreSQL UTLÄNDSK NYCKEL Begränsning

En främmande nyckel-begränsning anger att värdena i en kolumn eller en grupp av kolumner måste matcha värdena som visas i någon rad i en annan tabell. Detta låter dig fastställa referensintegriteten mellan två associerade tabeller.

Låt oss anta att du har en tabell som lagrar beställningar för olika produkter. Du vill säkerställa att tabellen innehåller beställningar av produkter som finns. Så här måste du definiera en främmande nyckel-begränsning i ordertabellen som refererar till produkttabellen.

Syntax:

CREATE TABLE	(
id INTEGER PRIMARY KEY. name VARCHAR(IO)
>;
CREATE TABLE testable
Id INTEGER PRIMARY KEY
read INTEGER REFERENCES	(id)
);

Exempel 2:

CREATE TABLE Student (
Std_ID INTEGER primary key,
First_name VARCHAR(20),
Last_name VARCHAR(20),
Gender CHAR(l),
Steam, VARCHAR(20),
Dept_NUM INTEGER REFERENCES Department
);

PostgreSQL UNDANTAGNING Begränsning

Exkluderingsbegränsningar hjälper dig att se till att om två rader jämförs med varandra i de angivna kolumnerna eller uttrycken med angivna operatorer, kommer åtminstone en av dessa operatorjämförelser att returnera ett null- eller falskt värde. Lägger till detta PostgreSQL constraint kommer automatiskt att skapa ett index av den typ som anges i constraint-deklarationen.

Exempel:

Till exempel följande PostgreSQL statement skapar en ny tabell som heter Skola och lägger till fem kolumner.

CREATE TABLE SCHOOL6(
STDID INT PRIMARY KEY NOT NULL,
STDNAME TEXT NOT NULL,
STDAGE INT NOT NULL,
FEEDBACK CHAR(50),
STANDARD INT NOT NULL,

Till exempel följande PostgreSQL statement skapar en ny tabell som heter Branch, som lägger till tre kolumner. Kolumnen STD_ID är den främmande nyckeln och den refererar till ID-fältet i tabellen SCHOOL6.

CREATE TABLE BRANCH (
BRANCHCODE INT PRIMARY KEY NOT NULL,
BRAMCHNAME CHAR(50) NOT NULL,
STD_ID INT references SCHOOL6(ID)
);

Vanliga frågor

PRIMÄRNYCKEL, UTLÄNDSK NYCKEL, UNIK, INTE NULL, KONTROLLERA, EXKLUDERA.

AI-verktyg som Copilot genererar CREATE TABLE-satser med begränsningar och CHECK-villkor.

Ja. AI-verktyg skannar scheman efter överblivna främmande nycklar, saknade NOT NULL-nycklar och tabeller utan primärnycklar.

PRIMÄRKNYCKEL kombinerar UNIQUE och NOT NULL; en per tabell. UNIQUE tillåter flera och accepterar NULL.

Använd ON DELETE CASCADE, SET NULL eller RESTRICT.

Nej. CHECK refererar endast till kolumner på samma rad. Använd främmande nycklar eller triggers.

Använd EXCLUDE när unikhet behöver operatorer som inte är likvärdiga (t.ex. && för överlappningping intervall).

Ja. ALTER TABLE ADD CONSTRAINT fungerar efter att den skapats. Använd NOT VALID för att hoppa över kontrollen av befintliga rader.

Sammanfatta detta inlägg med: