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

Cara membuat Batasan Unik pada Beberapa Kolom di SQL Server - Tutorial SQL Server / TSQL Bagian 96

Skenario:

Anda bekerja sebagai Pengembang SQL Server, Anda diminta untuk menyediakan skrip pembuatan untuk tabel dbo.Pelanggan dengan Batasan Unik pada kolom Nama Depan dan Nama Belakang.

Solusi:

Seperti yang kita ketahui bahwa Unique Constraint di SQL Server dibuat pada kolom atau kolom untuk membatasi kolom agar hanya menerima nilai unik.

Script di bawah ini dapat digunakan untuk membuat Unique Constraint pada beberapa kolom dalam kasus kami FirstName dan LastName.

USE [YourDatabaseName]
GO
CREATE TABLE [dbo].[Customer](
    [FirstName] [varchar](50) NULL,
    [LastName] [varchar](50) NULL,
    [SSN] VARCHAR(11),
    Constraint UQ_Dbo_Customer_FName_LName Unique(FirstName,LastName)
) 

--Let's insert some sample data to test Unique Constraint 
Insert into dbo.Customer(FirstName,LastName,SSN)
Values(Null,Null,'000-00-0000'),
('Aamir',Null,'000-00-0000'),
(Null,'Aamir','000-00-0000')
,('Aamir','Shahzad','000-00-0001')
,('Raza','M','000-00-0002')
 
 Jika Anda telah memperhatikan pernyataan insert, Di First Record saya telah memasukkan nilai Null untuk FirstName dan Last Name. Dalam catatan ke-2 saya menggunakan nilai 'Aamir' untuk nama depan dan Null untuk Nama Belakang. Dalam catatan ke-3 sebaliknya dari catatan ke-2. Dari sini kita memahami bahwa batasan unik bekerja pada kedua nilai kolom. Selama nilai gabungan dari kedua kolom unik, itu akan membiarkan kita memasukkan bahkan salah satunya adalah nol.

Jika saya ingin memasukkan catatan lain di mana saya memiliki Null untuk nama belakang , itu akan membiarkan saya tanpa masalah, karena unik dari nilai yang ada.

Insert into dbo.Customer(FirstName,LastName,SSN)
Values('Raza',Null,'000-00-0000')
 
 
 Mari kita periksa record dalam tabel dengan menggunakan kueri pemilihan.
Cara menambahkan Batasan Unik pada Beberapa Kolom di Tabel SQL Server
Jika kita mencoba memasukkan record duplikat, kita akan mendapatkan error di bawah ini.

Insert into dbo.Customer(FirstName,LastName,SSN)
Values('Raza',Null,'000-00-0000')
 
 Msg 2627, Level 14, State 1, Line 30Pelanggaran batasan UNIQUE KEY 'UQ_Dbo_Customer_FName_LName'. Tidak dapat memasukkan kunci duplikat di objek 'dbo.Customer'. Nilai kunci duplikatnya adalah (Raza, ). Pernyataan telah dihentikan.



Video Demo :Membuat Batasan Unik 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. Pemeriksaan Kesehatan SQL Server Proaktif, Bagian 5:Statistik Tunggu

  2. Kemungkinan Cara untuk Memperbaiki Masalah Korupsi Metadata SQL Server

  3. Bidang VARCHAR(MAX) saya membatasi dirinya pada 4000; apa yang memberi?

  4. Pernyataan SQL UPDATE untuk mengganti dua nilai dalam dua baris

  5. Cara Mengubah Kolom dari Null menjadi Tidak Null di Tabel SQL Server - Tutorial SQL Server / T-SQL Part 52