Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Apa itu Periksa Batasan di SQL Server - Tutorial SQL Server / TSQL Bagian 82

Apa itu Batasan Pemeriksaan :

Periksa Batasan membatasi nilai yang diterima oleh satu atau beberapa kolom.


Mari kita pahami Periksa Batasan dengan skenario waktu nyata.

Anda bekerja sebagai pengembang SQL Server, Anda perlu membuat tabel dbo.Customer yang harus memiliki kolom seperti FName, LName dan Address. Karena FName akan menjadi VARCHAR sehingga pengguna dapat memasukkan nilai string yang dapat berisi abjad, numerik, dan karakter lainnya. Anda ingin menulis Batasan Periksa sehingga FName hanya menerima huruf.

Solusi:

Mari kita buat tabel dengan Check Constraint dengan menggunakan script di bawah ini

--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]%')
)
 
Mari kita masukkan beberapa record ke dalam tabel dan lihat apakah Batasan Pemeriksaan kita berfungsi seperti yang diharapkan. Seharusnya hanya memasukkan catatan-catatan di mana FName hanya berisi huruf.

--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')
 Ketika saya mengeksekusi skrip sisipan di atas, di bawah ini adalah pesan yang saya terima dari SQL Server.

(1 baris terpengaruh)
Msg 547, Level 16, State 0, Line 18
Pernyataan INSERT bertentangan dengan batasan CHECK "CK__Customer__FName__5FB337D6". Konflik terjadi pada database "YourDatabaseName", tabel "dbo.Customer", kolom 'FName'.
Pernyataan telah dihentikan.
Msg 547, Level 16, State 0, Line 22
Pernyataan INSERT bertentangan dengan batasan CHECK "CK__Customer__FName__5FB337D6". Konflik terjadi pada database "YourDatabaseName", tabel "dbo.Customer", kolom 'FName'.
Pernyataan telah dihentikan.
Msg 547, Level 16, State 0, Line 26
Pernyataan INSERT bertentangan dengan batasan CHECK "CK__Customer__FName__5FB337D6". Konflik terjadi pada database "YourDatabaseName", tabel "dbo.Customer", kolom 'FName'.
Pernyataan telah dihentikan.

Hanya memasukkan record pertama yang berisi semua alfabet untuk FName, record lainnya ditolak oleh Check Constraint karena berisi karakter selain alfabet.

Mari kita periksa data di tabel untuk memastikan hanya satu record yang dimasukkan.
Apa itu Batasan Pemeriksaan di SQL Server dan cara Membuat Batasan Pemeriksaan di SQL Server

Demo Video:Apa itu Batasan Pemeriksaan dan Cara membuat Batasan Pemeriksaan di 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. Memulihkan Database SQL Server (T-SQL)

  2. sql query untuk mengembalikan perbedaan antara dua tabel

  3. Bagaimana cara mengetahui apa yang mengunci meja saya?

  4. Kembalikan Hak Istimewa Kolom dari Server Tertaut di SQL Server (Contoh T-SQL)

  5. Menyiapkan ketergantungan pakar untuk SQL Server