Hva er en IKKE NULL-begrensning?
NOT NULL-begrensningen sikrer at en kolonne ikke kan inneholde nullverdier som krever at hver rad i tabellen har en ikke-nullverdi for den aktuelle kolonnen.
Opplæringskrav:
For å følge instruksjonene som er gitt i dette innlegget, antar vi at du har følgende krav:
- Installert PostgreSQL-server på maskinen din
- Grunnleggende SQL kunnskap
- Tillatelse til å lage databasetabellobjekter som begrensninger, funksjoner osv
Eksempeltabell:
La oss starte med å sette opp en eksempeltabell med kolonner som inneholder en ikke null-begrensning. Ta følgende create table-setning som setter opp en grunnleggende tabell som ligner wp_users-tabellen i WordPress:
LAG TABELL wp_users (
ID SERIE PRIMÆR NØKKEL,
user_login VARCHAR(60) NOT NULL,
user_pass VARCHAR(255) NOT NULL,
user_nicename VARCHAR(50) IKKE NULL,
user_email VARCHAR(100) NOT NULL,
user_url VARCHAR(100),
user_registered TIMESTAMP IKKE NULL DEFAULT gjeldende_tidsstempel,
user_activation_key VARCHAR(255),
user_status INT IKKE NULL STANDARD 0,
display_name VARCHAR(250) IKKE NULL
);
Fra den gitte spørringen vil du legge merke til at de fleste kolonner inneholder en NOT NULL-begrensning.
Den mest effektive metoden for å lage en NOT NULL-begrensning i en gitt kolonne er under tabellopprettingen. Dette sikrer at alle dataene som legges til i tabellen, overholder reglene for begrensningen.
Men hvis du legger til en begrensning i en eksisterende tabell, gjelder reglene bare for dataene som legges til etter begrensningen og ikke for eksisterende data. Dette kan føre til inkonsekvenser, spesielt i store bord.
Legg til en NOT NULL-begrensning
I noen tilfeller vil du kanskje legge til en NOT NULL-begrensning til en eksisterende tabell. Du kan for eksempel bruke ALTER TABLE-kommandoen etterfulgt av ALTER COLUMN-leddet.
Syntaksen er som følger:
ALTER TABLE tabellnavnALTER COLUMN column_name SET NOT NULL;
Erstatt tabellnavnet med måltabellen og kolonnenavnet med målkolonnen du vil bruke begrensningen på.
Bekreft begrensningen
Du kan bekrefte at begrensningen eksisterer på en gitt tabell ved å bruke '\d'-kommandoen i PSQL-verktøyet.
\d tabellnavnEksempel:
sample_db=# \d wp_brukere;Den resulterende utgangen er som følger:
Fjern NOT NULL-begrensningen
Det kan også være lurt å fjerne NOT NULL-begrensningen fra en gitt kolonne. For det kan vi bruke ALTER TABLE- og ALTER COLUMN-klausulene som følger:
ALTER TABLE tabellnavnALTER COLUMN column_name DROP NOT NULL;
For å fjerne NOT NULL-begrensningen fra user_url-kolonnen i wp_users-tabellen, kan vi for eksempel kjøre følgende spørring:
ALTER TABLE wp_users ALTER COLUMN user_url DROP NOT NULL;Dette bør slippe begrensningen fra tabellen.
Konklusjon
Denne opplæringen utforsket hvordan vi kan jobbe med NOT NOLL-begrensningen i PostgreSQL. Vi undersøkte også hvordan man kan fjerne en eksisterende NOT NULL-begrensning fra en gitt kolonne.