Co to jest ograniczenie sprawdzania:
Sprawdź ograniczenia ograniczają wartości, które są akceptowane przez jedną lub więcej kolumn.Zrozummy Sprawdź ograniczenie ze scenariuszem w czasie rzeczywistym.
Pracujesz jako programista SQL Server, musisz utworzyć tabelę dbo.Customer, która powinna zawierać kolumny takie jak FName, LName i Address. Ponieważ FName ma być VARCHAR, więc użytkownicy mogą wstawiać wartości łańcuchowe, które mogą zawierać litery, cyfry i inne znaki. Chcesz napisać ograniczenie sprawdzające, aby FName akceptowało tylko alfabety.Rozwiązanie:
Utwórzmy tabelę z Check Constraint za pomocą poniższego skryptu--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]%') )
Wstawmy kilka rekordów do tabeli i zobaczmy, czy nasze ograniczenie sprawdzania działa zgodnie z oczekiwaniami. Powinno pozwalać tylko na wstawianie tych rekordów, w których FName zawiera tylko litery.
--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')Kiedy wykonałem powyższe skrypty wstawiania, poniżej znajdują się wiadomości, które otrzymałem z SQL Server.
(1 wiersz(e) dotyczy)
Msg 547, Level 16, State 0, Line 18
Instrukcja INSERT była w konflikcie z ograniczeniem CHECK "CK__Customer__FName__5FB337D6". Konflikt wystąpił w bazie danych "NazwaBazyDanych", tabela "dbo.Klient", kolumna "NazwaF".
Oświadczenie zostało zakończone.
Msg 547, Poziom 16, Stan 0, Wiersz 22
Instrukcja INSERT spowodowała konflikt z ograniczeniem CHECK „CK__Customer__FName__5FB337D6”. Konflikt wystąpił w bazie danych "NazwaBazyDanych", tabela "dbo.Klient", kolumna "NazwaF".
Oświadczenie zostało zakończone.
Msg 547, Poziom 16, Stan 0, Wiersz 26
Instrukcja INSERT spowodowała konflikt z ograniczeniem CHECK „CK__Customer__FName__5FB337D6”. Konflikt wystąpił w bazie danych "YourDatabaseName", tabeli "dbo.Customer", kolumnie "FName".
Oświadczenie zostało zakończone.
Wstawiono tylko pierwszy rekord, który zawiera wszystkie alfabety dla FName, pozostałe rekordy są odrzucane przez nasze ograniczenie sprawdzania, ponieważ zawierają inne znaki niż litery.
Sprawdźmy dane w tabeli, aby upewnić się, że wstawiono tylko jeden rekord.
Co to jest ograniczenie sprawdzania w SQL Server i jak utworzyć ograniczenie sprawdzania w SQL Server |
Wideo demonstracyjne:Co to jest ograniczenie sprawdzania i jak utworzyć ograniczenie sprawdzania w SQL Server