Co je kontrolní omezení:
Zaškrtněte omezení omezují hodnoty, které jsou přijímány jedním nebo více sloupci.Pojďme pochopit Check Constraint pomocí scénáře v reálném čase.
Pracujete jako vývojář SQL Serveru, musíte vytvořit tabulku dbo.Customer, která by měla mít sloupce jako FName, LName a Address. Protože FName bude VARCHAR, uživatelé mohou vkládat řetězcové hodnoty, které mohou obsahovat abecedy, číslice a další znaky. Chcete napsat kontrolní omezení, aby FName akceptoval pouze abecedy.Řešení:
Pojďme vytvořit tabulku s Check Constraint pomocí níže uvedeného skriptu--Create Table with use YourDatabaseName go Create table dbo.Customer ( FName VARCHAR(100) Not Null, LName VARCHAR(100), StreetAddress VARCHAR(255), Check (FName not like '%[^a-z]%') )
Pojďme vložit nějaké záznamy do tabulky a uvidíme, zda naše kontrola omezení funguje podle očekávání. Mělo by to umožnit vložit pouze ty záznamy, ve kterých FName obsahuje pouze abecedy.
--insert some sample records insert into dbo.Customer (FName,LName,StreetAddress) Values ('Aamir','Shahzad','xyz address') go insert into dbo.Customer (FName,LName,StreetAddress) Values ('Aamir4','Shahzad','xyz address') go insert into dbo.Customer (FName,LName,StreetAddress) Values ('abc3c','Shahzad','xyz address') go insert into dbo.Customer (FName,LName,StreetAddress) Values ('-tName','Shahzad','xyz address')Když jsem provedl výše uvedené vkládací skripty, níže jsou zprávy, které jsem obdržel ze serveru SQL.
(ovlivněný 1 řádek)
Zpráva 547, úroveň 16, stav 0, řádek 18
Příkaz INSERT byl v konfliktu s omezením CHECK "CK__Customer__FName__5FB337D6". Ke konfliktu došlo v databázi "YourDatabaseName", tabulce "dbo.Customer", sloupci 'FName'.
Příkaz byl ukončen.
Zpráva 547, úroveň 16, stav 0, řádek 22
Příkaz INSERT byl v konfliktu s omezením CHECK "CK__Customer__FName__5FB337D6". Ke konfliktu došlo v databázi "YourDatabaseName", tabulce "dbo.Customer", sloupci 'FName'.
Příkaz byl ukončen.
Zpráva 547, úroveň 16, stav 0, řádek 26
Příkaz INSERT byl v konfliktu s omezením CHECK "CK__Customer__FName__5FB337D6". Ke konfliktu došlo v databázi "YourDatabaseName", tabulce "dbo.Customer", sloupci 'FName'.
Příkaz byl ukončen.
Vložil pouze úplně první záznam, který obsahuje všechny abecedy pro FName, zbytek záznamů je odmítnut naším kontrolním omezením, protože obsahují jiné znaky než abecedy.
Zkontrolujeme data v tabulce, abychom se ujistili, že je vložen pouze jeden záznam.
Co je kontrolní omezení na serveru SQL Server a jak vytvořit kontrolní omezení na serveru SQL |
Video ukázka:Co je kontrolní omezení a jak vytvořit kontrolní omezení v SQL Server