En begrensning refererer til en regel som definerer hvordan dataene i en gitt kolonne brukes. En begrensning kan utføre handlinger som å forhindre innsetting av nullverdier, forhindre innsetting av duplikatverdier og mer.
I denne artikkelen vil vi utforske en av de praktiske begrensningene i SQL -serveren som heter Check Begrensning. En sjekkbegrensning brukes hovedsakelig for å sikre dataintegriteten i en gitt kolonne.
Ved hjelp av en sjekkbegrensning kan du sikre at dataene som blir lagt til en gitt kolonne stadig evaluerer til en gitt boolsk verdi. For eksempel kan du legge til en sjekkbegrensning som sikrer at bare verdiene forbi en spesifikk dato legges til den kolonnen.
La oss diskutere dette videre.
SQL Server Check Begrensning
Det er to måter å legge til en sjekkbegrensning i en tabellkolonne:
Det er alltid en utmerket praksis å legge til en begrensning under opprettelse av bord. Dette sikrer at regelen blir brukt på alle dataene i den kolonnen.
For å illustrere, ta tabelldefinisjonen som er vist i følgende:
Lag tabellbrukere (
id int identitet primærnøkkel,
Brukernavn varchar (100) ikke null,
Registrerings_dato Datokontroll (Registrerings_date> '2022-01-01')
);
I det gitte eksemplet tabellen opprettet vi tre kolonner, hver med sin unike datatype og verdier. Imidlertid setter vi i kolonnen Registrerings_dato av sjekkbegrensningen som sjekker at en hvilken som helst datoverdi som vil til den kolonnen er større enn 2022-01-01.
Vi starter med å ringe sjekkens nøkkelord etterfulgt av det boolske uttrykket som vi ønsker å bruke på den kolonnen.
Du kan også angi et navn for begrensningen ved å bruke begrensningsordet. Et eksempel er som følger:
Lag tabellbrukere (
id int identitet primærnøkkel,
Brukernavn varchar (100) ikke null,
Registrering_dato Dato Begrensning Verify_date Check (Registrering_dates> '2022-01-01')
);
I dette tilfellet tildeler vi navnet som er "verify_date" til den opprettede begrensningen. Å navngi en begrensning kan gjøre livet ditt enklere når du trenger å fjerne eller oppdatere begrensningsparametrene.
MERK: Du kan ikke ha ikke navngitte begrensninger i databasen din. Derfor, hvis det ikke er gitt noe navn, genererer SQL -serveren automatisk et navn for begrensningen din.
Når vi definerer en begrensning, kan vi legge til dataene som vist i følgende:
sett inn
inn i
Brukere (brukernavn,
melder_date)
verdier ('bruker1',
'2022-01-02');
Du vil kanskje legge merke til at den forrige innsatserklæringen overholder begrensningsreglene i kolonnen Registrerings_dato.
Imidlertid, hvis vi bryter reglene for den begrensningen, returnerer SQL -serveren en feil som illustrert i følgende:
sett inn
inn i
Brukere (brukernavn,
melder_date)
verdier ('User2', '2021-12-31');
Produksjon:
SQL Feil [547] [23000]: Insert -setningen er i konflikt med sjekkbegrensningen "VERIFY_DATE". Konflikten skjedde i databasen "Resolver", tabell "DBO.Brukere ", kolonne 'Registrerings_date'.
Som du kan se, varsler SQL -serveren deg om begrensningsovertredelsen ved innsatserklæringen.
Endre en eksisterende begrensning
For å endre definisjonen av en eksisterende begrensning ved hjelp av Transact-SQL, må du slette begrensningen og gjenopprette den med de nye definisjonene på nytt med de nye definisjonene.
Legge til en sjekkbegrensning til en eksisterende tabell
For å legge til en sjekkbegrensning til en eksisterende tabell, bruker du syntaksen gitt i følgende:
ALTER TABLE TABLE_NAME
Legg til begrensningsbegrensningsnavn sjekk (CONSTRAINT_DEFINITION);
Fjerne en sjekkbegrensning
For å fjerne en sjekkbegrensning, kan du bruke kommandoen Alter Table som vist i følgende:
ALTER TABLE TABLE_NAME
Slipp begrensningsbegrensningsnavn;
Deaktivere en begrensning
Du kan hoppe over begrensningsreglene uten å slippe begrensningen ved å deaktivere den. Følgende viser syntaks for å deaktivere en begrensning:
ALTER TABLE TABLE_NAME
NoCheck Begrensningsbegrensningsnavn;
Den gitte syntaksen skal deaktivere begrensningen for innsats- og oppdateringsuttalelser.
Konklusjon
I dette innlegget utforsket vi hvordan vi bruker arbeidet med sjekkbegrensningen i SQL -serveren. Vi diskuterte hvordan vi kan lage en ny begrensning, hvordan du endrer en begrensning, hvordan du deaktiverer en begrensning og hvordan du kan slippe en begrensning fra et bord.