programing tip

2 개의 열을 기반으로 SQL 고유 제약 조건을 생성하려면 어떻게해야합니까?

itbloger 2020. 12. 30. 07:44
반응형

2 개의 열을 기반으로 SQL 고유 제약 조건을 생성하려면 어떻게해야합니까?


다음과 같은 테이블이 있습니다.

|UserId   |  ContactID |  ContactName 
---------------------------------------
| 12456   |  Ax759     |  Joe Smith
| 12456   |  Ax760     |  Mary Smith
| 12458   |  Ax739     |  Carl Lewis
| 12460   |  Ax759     |  Chuck Norris
| 12460   |  Bx759     |  Bruce Lee

사용자가 중복 된 연락처 ID를 가질 수 없도록이 테이블에 제약 조건을 추가해야합니다. 사용자는 다양한 외부 시스템에서 데이터를 가져 오므로 ContactId는 전체적으로 고유하지 않지만 사용자별로 고유합니다.

단일 열을 기반으로 고유 및 Null이 아닌 제약 조건을 만드는 방법을 알고 있지만 두 열에 대해 고유 제약 조건을 만들려면 어떻게해야합니까?


이것을 시도 할 수 있습니다.

CREATE UNIQUE CLUSTERED INDEX index_name ON TABLE (col1,col2)
or
CREATE UNIQUE NONCLUSTERED INDEX index_name ON TABLE (col1,col2)

또는

ALTER TABLE [dbo].[TABLE] ADD CONSTRAINT
UNIQUE_Table UNIQUE CLUSTERED
(
col1,
col2
) ON [PRIMARY]

필드에 고유 한 제약 조건을 추가 할 수 있습니다.

ALTER TABLE YourTable
ADD CONSTRAINT UQ_UserId_ContactID UNIQUE(UserId, ContactID)

시도 할 수 있습니다 ALTER TABLE [TABLE_NAME] ADD UNIQUE (column1,column2,column3 ...columnN).

이것이 응원에 도움이되기를 바랍니다.


다음은 고유 한 INDEX가 아닌 고유 한 CONSTRAINT를 만드는 구문입니다.

ALTER TABLE publishers 
  ADD CONSTRAINT uqc_pub_name 
  UNIQUE (pub_name)

열의 고유성을 확인하기 위해 사용하는 방법에 따라 미묘한 차이가 있다는 점에 유의하는 것이 중요합니다.

이에 대한 흥미로운 연습은 다음 MSDN 참조를 참조하십시오.

http://msdn.microsoft.com/en-us/library/aa224827(SQL.80).aspx


CREATE TABLE [LineItems](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [OrderID] [int] NOT NULL,
    [LineItemNumber] [int] NOT NULL,
 CONSTRAINT [PK_LineItems] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
),
 CONSTRAINT [UC_LineItems] UNIQUE NONCLUSTERED 
(
    [OrderID] ASC,
    [LineItemNumber] ASC
)
)

참조 URL : https://stackoverflow.com/questions/1109614/how-can-i-create-a-sql-unique-constraint-based-on-2-columns

반응형