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

Cara Membuat Batasan Pemeriksaan pada Beberapa Kolom di SQL Server - Tutorial SQL Server / TSQL Bagian 84

Skenario:

Anda bekerja sebagai pengembang SQL Server, Anda perlu membuat tabel dbo.Customer yang harus memiliki kolom First Name, Age dan Age Type. Anda dapat menambahkan CustomerId sebagai Identitas. Anda perlu membuat Check Constraint pada Kolom Age dan Age Type dengan logika di bawah ini


<65 agetype="Dewasa" dan="" p="">
Jika benar, biarkan penyisipan rekaman atau pembaruan gagal karena Batasan Pemeriksaan.

<65 agetype="Adult" and="" p="">Solusi:

<65 agetype="Adult" and="" p="">Skrip di bawah ini dapat digunakan untuk menambahkan Batasan Pemeriksaan pada beberapa kolom sesuai dengan kebutuhan kami.


CREATE TABLE dbo.Customer (
    CustomerId INT identity(1, 1)
    ,NAME VARCHAR(100)
    ,Age INT
    ,AgeType VARCHAR(15)
    ,CONSTRAINT dbo_Customer_AgeAndAgeType CHECK (
        (
            Age <= 17
            AND AgeType = 'Child'
            )
        OR (
            Age > 17
            AND Age < 65
            AND AgeType = 'Adult'
            )
        OR (
            Age >= 65
            AND AgeType = 'Senior'
            )
        )
    )
 
 
Mari kita masukkan beberapa record dan coba lihat apakah Check Constraint berfungsi seperti yang diharapkan.


 
--Correct values accrording to Constraint
insert into dbo.Customer(Name,Age,AgeType)
Values('Najaf',13,'Child')
go

--Wrong values according to Check Constraint
insert into dbo.Customer(Name,Age,AgeType)
Values('Leena',14,'Adult')
go
--Correct values accroding to Constraint
insert into dbo.Customer(Name,Age,AgeType)
Values('Raza',30,'Adult')
go
--Wrong values according to Check Constraint
insert into dbo.Customer(Name,Age,AgeType)
Values('Aamir',30,'Senior')
go
--Wrong values according to Check Constraint
insert into dbo.Customer(Name,Age,AgeType)
Values('John',65,'Adult')
go
--Correct values accroding to Constraint
insert into dbo.Customer(Name,Age,AgeType)
Values('Kris',65,'Senior')
go


(1 baris terpengaruh)
Msg 547, Level 16, State 0, Line 25
Pernyataan INSERT bertentangan dengan batasan CHECK "dbo_Customer_AgeAndAgeType". Konflik terjadi di database "YourDatabaseName", tabel "dbo.Customer".
Pernyataan telah dihentikan.

(1 baris terpengaruh)
Msg 547, Level 16, State 0, Line 33
Pernyataan INSERT bertentangan dengan batasan CHECK "dbo_Customer_AgeAndAgeType". Konflik terjadi di database "YourDatabaseName", tabel "dbo.Customer".
Pernyataan telah dihentikan.
Msg 547, Level 16, State 0, Line 37
Pernyataan INSERT bertentangan dengan batasan CHECK "dbo_Customer_AgeAndAgeType". Konflik terjadi di database "YourDatabaseName", tabel "dbo.Customer".
Pernyataan telah dihentikan.

(1 baris terpengaruh)

Mari kita periksa data dalam tabel dengan menggunakan kueri pemilihan. Seperti yang dapat dilihat di bawah, satu-satunya catatan yang dimasukkan yang melewati Batasan Pemeriksaan. Catatan lainnya tidak dapat dimasukkan.
Cara membuat Batasan Pemeriksaan pada Beberapa Kolom di Tabel SQL Server

Mari kita coba perbarui catatan dan lihat apakah Periksa Batasan berfungsi seperti yang diharapkan.

update dbo.Customer
set Age=30
where Customerid=1


Gagal dengan kesalahan di bawah ini karena kami tidak dapat memiliki Usia 30 untuk AgeType='Child' menurut logika Batasan Pemeriksaan kami.

Msg 547, Level 16, State 0, Baris 18
Pernyataan UPDATE bertentangan dengan batasan CHECK "dbo_Customer_AgeAndAgeType". Konflik terjadi pada database "YourDatabaseName", tabel "dbo.Customer".
Pernyataan telah dihentikan.


Video Demo :Cara membuat Check Constraint pada Beberapa Kolom 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. Bagaimana SCHEMA_NAME() Bekerja di SQL Server

  2. Cara Drop Database dengan menggunakan TSQL dan GUI - Tutorial SQL Server / TSQL Bagian 25

  3. SQL:mencari string di setiap kolom varchar dalam database

  4. Bagaimana saya bisa mencadangkan database SQL Server jarak jauh ke drive lokal?

  5. Cara menggabungkan hasil dua kueri menjadi satu kumpulan data