NOT NULL- og CHECK-betingelser
Forby manglende verdier med NOT NULL, og valider domeneregler med CHECK (price > 0, status IN ('active','archived')).
NOT NULL- og CHECK-betingelser er en gratis leksjon i SQL Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i SQL Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i SQL Academy inneholder totalt 4 leksjoner.
Hvorfor bruke begrensninger?
Begrensninger flytter valideringen INN i databasen. Fordelen er enorm: alle apper, skript og ad hoc-spørringer skriver gyldige data – eller mislykkes tydelig.
NOT NULL
Den enkleste begrensningen: denne kolonnen må ha en verdi:
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
email VARCHAR(255) NOT NULL,
age INT -- NULL allowed
);Legge til NOT NULL senere
Fyll først inn verdier i eksisterende rader, og legg deretter til begrensningen:
UPDATE users SET email = 'unknown@example.com' WHERE email IS NULL;
ALTER TABLE users ALTER COLUMN email SET NOT NULL;CHECK-begrensning
Et vilkårlig boolsk uttrykk som alle rader må oppfylle:
CREATE TABLE products (
id BIGSERIAL PRIMARY KEY,
name TEXT NOT NULL,
price NUMERIC(10,2) NOT NULL CHECK (price > 0),
discount NUMERIC(5,2) DEFAULT 0 CHECK (discount BETWEEN 0 AND 100)
);CHECK med enum-lignende verdier
Begrens en kolonne til et fast sett med verdier:
CREATE TABLE orders (
id BIGSERIAL PRIMARY KEY,
status TEXT NOT NULL
CHECK (status IN ('pending','paid','shipped','cancelled'))
);NULL går stille gjennom CHECK
En CHECK-begrensning godtas når uttrykket er NULL (ukjent). Kombiner med NOT NULL når du trenger en absolutt garanti:
CREATE TABLE invoices (
amount NUMERIC(10,2) NOT NULL CHECK (amount > 0)
);CHECK med flere kolonner
Du kan referere til flere kolonner:
CREATE TABLE bookings (
start_at TIMESTAMPTZ NOT NULL,
end_at TIMESTAMPTZ NOT NULL,
CHECK (start_at < end_at)
);Legge til CHECK senere
Valider eksisterende rader først, og legg deretter til begrensningen:
ALTER TABLE products
ADD CONSTRAINT positive_price CHECK (price > 0);
-- fails if any row violates itNOT VALID-trikset for store tabeller
Hopp over den innledende fullstendige skanningen, og valider senere i bakgrunnen:
ALTER TABLE products
ADD CONSTRAINT positive_price CHECK (price > 0) NOT VALID;
ALTER TABLE products VALIDATE CONSTRAINT positive_price;Navngitte begrensninger
Gi alltid begrensningene navn, slik at feilmeldinger og migreringer blir forutsigbare:
ALTER TABLE products
ADD CONSTRAINT products_price_positive CHECK (price > 0);Ikke dupliser logikk i appen
Hvis databasen håndhever regelen, får alle kodebaner fordel av det – ingen "jeg glemte å validere". Behold duplisert validering i appen av hensyn til brukeropplevelsen (umiddelbar tilbakemelding), men la databasen være fasiten.
Oppsummering
NOT NULL og CHECK stenger ute de vanligste ugyldige dataene.
- NOT NULL: ingen manglende verdier
- CHECK: vilkårlige regler per rad
- Bruk NOT VALID + VALIDATE for å legge til begrensninger uten nedetid
Hurtigsjekk
Hva skjer hvis du skriver CHECK (price > 0) på en kolonne uten NOT NULL?
Lær deg SQL med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 46
- Leksjoner
- 183
Ofte stilte spørsmål
Er leksjonen «NOT NULL- og CHECK-betingelser» gratis?
Ja – hele teksten i «NOT NULL- og CHECK-betingelser» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av SQL Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i SQL Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «NOT NULL- og CHECK-betingelser»?
Forby manglende verdier med NOT NULL, og valider domeneregler med CHECK (price > 0, status IN ('active','archived')). Du øver på SQL Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med SQL Academy?
Ingen tidligere erfaring er nødvendig. SQL Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.
Hvor lang tid tar leksjonen «NOT NULL- og CHECK-betingelser»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne SQL Academy-leksjonen?
Ja. Alle SQL Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- NOT NULL- og CHECK-betingelser
- UNIQUE-betingelser og sammensatte nøkler
- FOREIGN KEY og referansehandlinger
- DEFAULT-verdier og genererte kolonner