반응형
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)
또는
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)
.
이게 응원에 도움이 되길 바랍니다.
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
)
)
다음은 고유한 INDEX가 아닌 고유한 CONSTARINT를 만드는 구문은 다음과 같습니다.
ALTER TABLE publishers
ADD CONSTRAINT uqc_pub_name
UNIQUE (pub_name)
열의 고유성을 강화하기 위해 사용하는 방법에 따라 미묘한 차이가 있습니다.
이에 대한 자세한 내용은 다음 MSDN 참조를 참조하십시오.
http://msdn.microsoft.com/en-us/library/aa224827(SQL.80).aspx
언급URL : https://stackoverflow.com/questions/1109614/how-can-i-create-a-sql-unique-constraint-based-on-2-columns
반응형
'source' 카테고리의 다른 글
C#에서 저장 프로시저를 큰 CLOB로 호출하는 문제 발생 (0) | 2023.06.28 |
---|---|
Mariadb: OFFSET 및 LIMIT를 사용하는 페이지가 한 행을 건너뜁니다. (0) | 2023.06.28 |
WiX에서 Oracle ODP.Net에 대한 레지스트리 키(값이 아님)가 있는지 테스트하려면 어떻게 해야 합니까? (0) | 2023.06.23 |
cx_Oracle:각 행을 사전으로 받으려면 어떻게 해야 합니까? (0) | 2023.06.23 |
HttpWebRequest 클래스가 보내는 원시 HTTP 요청은 어떻게 볼 수 있습니까? (0) | 2023.06.23 |