SQL Serverの一意性制約とは:
SQL Serverの一意の制約は、一意の値のみを受け入れるように列を制限するために1つまたは複数の列に作成されます。一意の制約が作成される列では、単一のNull値のみが許可されます。
シナリオ:
保険会社のSQLServer開発者として働いているとすると、SSN列を持ち、常に一意の値を受け入れる必要があるdbo.Customerテーブルを作成するように求められます。解決策:
上記のシナリオでは、SSN列に一意性制約を使用できます。以下のスクリプトを使用して、列に一意の制約を作成できます。USE [YourDatabaseName] GO CREATE TABLE [dbo].[Customer]( [FirstName] [varchar](50) NULL, [LastName] [varchar](50) NULL, [SSN] VARCHAR(11), Unique(SSN) ) --Insert sample records in table Insert into dbo.Customer(FirstName,LastName,SSN) Values('Raza','M',Null) ,('Aamir','Shahzad','000-00-0001') ,('Aamir','Shahzad','000-00-0002')
Select query
を使用して、dbo.Customerテーブルのデータを確認します。 |
SQLServerの列に一意性制約を追加する方法 |
システムビューを使用して、一意の制約が追加されているかどうか、およびSQLServerがそれに付けた名前を確認しましょう。
SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_TYPE = 'UNIQUE'
SQLServerに一意の制約を追加する方法 |
[一意の制約]列に既に存在する値を挿入しようとすると、以下のエラーが発生します。
Insert into dbo.Customer(FirstName,LastName,SSN) Values('Raza','M',Null)メッセージ2627、レベル14、状態1、行11
UNIQUEKEY制約の違反'UQ__Customer__CA1E8E3C7E8AFCB1'。オブジェクト'dbo.Customer'に重複するキーを挿入できません。重複するキー値は(
ステートメントは終了しました。
何らかの命名規則を使用して一意性制約を作成する場合は、以下の構文を使用できます。
USE [YourDatabaseName] GO CREATE TABLE [dbo].[Customer]( [FirstName] [varchar](50) NULL, [LastName] [varchar](50) NULL, [SSN] VARCHAR(11), Constraint UQ_Dbo_Customer_SSN Unique(SSN) )
ビデオデモ:SQLServerの一意の制約とは