Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Co to jest ograniczenie sprawdzające w SQL Server — samouczek SQL Server / TSQL — część 82

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wskazówki, jak zmniejszyć złożoność SQL Server

  2. 3 najważniejsze powody, dla których ludzie przechodzą na SaaS

  3. 5 sposobów na uzyskanie skróconej nazwy miesiąca z daty w SQL Server

  4. Replikacja bazy danych SQL Server

  5. Jakie są zalety VistaDB