Begrensninger er reglene håndheves på datakolonner på bordet. Disse brukes til å forhindre ugyldige data blir lagt inn i databasen. Dette sikrer nøyaktigheten og påliteligheten av dataene i databasen.
Begrensninger kan være kolonnen nivå eller tabellnivå. Kolonne nivå begrensninger, gjelder kun for én kolonne der som tabellen nivå begrensninger brukes på hele tabellen. Å definere en datatype for en kolonne er en begrensning i seg selv. For eksempel, begrenser en columnof typen DATE kolonnen til gyldige datoer
Følgende er vanligvis brukes begrensninger tilgjengelige i PostgreSQL
NOT NULL Constraint Bilde:.. Sørger for at en kolonne kan ikke ha NULL verdi
entydig begrensning Bilde:.. Sørger for at alle verdier i en kolonne er forskjellige
primærnøkkelen Bilde: Unikt identifiserer hver rad /post i en database tabell
UTENLANDSKE Key Bilde:. constrains data basert på kolonner i andre tabeller.
SJEKK Constraint Bilde: kontrollbegrensningen sikrer at alle verdier i en kolonne oppfylle visse vilkår.
UNNTAKS Constraint Bilde: The UTELUKKER begrensningen sikrer at hvis noen to rader er sammenlignet på den oppgitte kolonnen (e) eller uttrykk (e) med den angitte operatøren (s ), ikke alle av disse sammenligningene vil returnere SANN.
NOT NULL Begrensning
Som standard en kolonne kan inneholde nullverdier. Hvis du ikke vil at en kolonne for å ha en NULL verdi, så må du definere en slik begrensning på denne kolonnen som spesifiserer at NULL er nå ikke lov for den kolonnen. En NOT NULL begrensningen er alltid skrevet begrensningen en kolonne som
En NULL er ikke det samme som ingen data, snarere representerer det ukjente data
Eksempel:..
For eksempel oppretter følgende PostgreSQL utsagn en ny tabell kalt COMPANY1 og legger fem søyler, tre av dem, ID og navn og alder, oppgir ikke å akseptere NULL verdier:
CREATE TABLE COMPANY1 (ID INT PRIMARY KEY NOT NULL, NAME TEKST NOT NULL, AGE INT NOT NULL, ADRESSE CHAR (50), LØNN REAL);
entydig begrensning
Den entydige begrensningen forhindrer to poster fra å ha identiske verdier i en bestemt kolonne. I COMPANY tabellen, for eksempel, du vil hindre to eller flere personer fra å ha samme alder
Eksempel:.
For eksempel skaper følgende PostgreSQL utsagn en ny tabell kalt COMPANY3 og legger fem kolonner. Her er AGE kolonnen satt til UNIK, slik at du ikke kan ha to poster med samme alder:
opprette tabellen COMPANY3 (ID INT PRIMARY KEY NOT NULL, NAME TEKST NOT NULL, AGE INT NOT NULL UNIK, ADRESSE CHAR (50 ), LØNN REAL STANDARD 50000.00);
PRIMARY KEY begrensning
PRIMARY KEY begrensningen entydig identifiserer hver enkelt post i en database tabell. Det kan være mer UNIKE kolonner, men bare én primærnøkkel i en tabell. Primærnøkler er viktig når man designer databasetabellene. Primærnøkler er unike IDer.
Vi bruker dem til å referere til tabellrader. Primærnøkler blitt fremmednøkler i andre tabeller, når du oppretter relasjoner mellom tabeller. På grunn av en langvarig koding forglemmelse ", kan primærnøkler være NULL i SQLite. Dette er ikke tilfelle med andre databaser
En primærnøkkel er et felt i en tabell som entydig identifiserer hver rad /post i en database tabell. Primærnøkler må inneholde unike verdier. En primærnøkkel kolonnen kan ikke ha nullverdier.
En tabell kan bare ha én primærnøkkel, som kan bestå av ett eller flere felt. Når flere felt brukes som primærnøkkel, blir de kalt en sammensatt nøkkel
.
Hvis en tabell har en definert primærnøkkel på alle felt (er), så kan du ikke ha to poster som har den samme verdien av dette feltet (s)
Eksempel:.
Du har allerede sett flere eksempler ovenfor der vi har skapt COMAPNY4 bord med ID som primærnøkkel:
opprette tabellen COMPANY4 (ID INT PRIMARY KEY NOT NULL, NAME TEKST NOT NULL, AGE INT NOT NULL, ADRESSE CHAR (50), LØNN REAL);
fremmednøkkelbegrensning
En fremmednøkkel begrensning spesifiserer at verdiene i en kolonne (eller en gruppe av kolonner) må samsvare med de verdier som forekommer i enkelte rad i en annen tabell. Vi sier dette opprettholder referanseintegritet mellom to relaterte tabeller. De kalles fremmednøkler fordi begrensningene er utenlandske; det vil si utenfor bordet. Fremmednøkler kalles en refererer nøkkel.
Eksempel
For eksempel skaper følgende PostgreSQL utsagn en ny tabell kalt COMPANY5 og legger fem søyler.
CREATE TABLE COMPANY6 (ID INT PRIMÆR KEY NOT NULL, NAME TEKST NOT NULL, AGE INT NOT NULL, ADRESSE CHAR (50), LØNN REAL);
For eksempel skaper følgende PostgreSQL utsagn en ny tabell kalt DEPARTMENT1, som legger tre kolonner. . EMP_ID kolonnen er fremmednøkkel og referanser ID-feltet i tabellen COMPANY6
CREATE TABLE DEPARTMENT1 (ID INT PRIMARY KEY NOT NULL, DEPT CHAR (50) NOT NULL, referanser EMP_ID INT COMPANY6 (ID));
kontrollbegrensningen
kontrollbegrensningen gjør at en betingelse for å sjekke verdien blir inngått en rekord. Hvis tilstanden evalueres til false, bryter posten begrensningen, og er ikke inngått bordet
Eksempel:.
For eksempel skaper følgende PostgreSQL utsagn en ny tabell kalt COMPANY5 og legger fem kolonner. Her legger vi en sjekk med LØNN kolonne, slik at du ikke kan ha noen LØNN Zero:
CREATE TABLE COMPANY5 (ID INT PRIMARY KEY NOT NULL, NAME TEKST NOT NULL, AGE INT NOT NULL, ADRESSE CHAR (50), LØNN REAL CHECK (LØNN > 0));
UNNTAKS Begrensning
Eksklusjons begrensninger sikre at hvis noen to rader er sammenlignet på de angitte kolonnene eller uttrykk ved hjelp av de angitte operatører, minst én av disse operatør sammenligninger vil returnere false eller null.
Eksempel
For eksempel skaper følgende PostgreSQL utsagn en ny tabell kalt selskapet.7 og legger fem kolonner. Her legger vi en UTELUKKER begrensning:
CREATE TABLE selskapet.7 (ID INT PRIMARY KEY NOT NULL, NAME TEKST, AGE INT, ADRESSE CHAR (50), LØNN REAL, utelukker BRUKE kjerne (NAVN MED =, alder med <>) );
Her BRUKE gist
er den type indeksen for å bygge og bruke for håndheving
Du må kjøre kommandoen CREATE FORLENGELSE btree_gist;.
, en gang per database . Dette vil installere btree_gist forlengelse, som definerer eksklusjons begrensninger på vanlig skalar datatyper
Som vi har håndhevet en alder må være samme, la oss se dette ved å sette inn poster til bordet.
INSERT INTO selskapet.7 VERDIER ( 1, 'Paul', 32, "California", 20000.00); INSERT INTO selskapet.7 VALUES (2, 'Paul', 32 'Texas', 20000.00); INSERT INTO selskapet.7 VALUES (3, 'Allen', 42, "California", 20000.00); For de to første INSERT-setninger postene er lagt til selskapet.7 bordet. For tredje INSERT-setningen følgende feilmelding vises: FEIL: kopiere nøkkelverdi bryter entydige begrensningen "company7_pkey" DETALJ:. Key (id) = (3) finnes allerede
Slippe Begrensninger:
For å fjerne en begrensningen du trenger å vite navnet. Hvis navnet er kjent, er det lett å falle. Annet du trenger for å finne ut systemet generert navn. Den psql kommandoen \\ d tabellnavn kan være nyttig her. Den generelle syntaksen er:
ALTER TABLE table_name DROP CONSTRAINT some_name;