2017-02-13 21 views
2

請建議我如何在兩列上應用唯一鍵比較。即假設我們有兩列FK_Col1和FK_Col2,並且如果我們在兩列中插入2和6,那麼我們不應該能夠在兩列中再次插入2和6或6和2。交換兩列的唯一鍵

Plaese建議我如何做到這一點。

在此先感謝

+0

使其各式獨特的鍵 –

+0

ALTER TABLE TestTable的 ADD CONSTRAINT uq_FK_Col1_FK_Col2 UNIQUE(列1,列2); –

+0

複合主鍵,唯一約束或唯一索引將確保不超過一行可以具有相同的值。 –

回答

0

在創建表

CREATE TABLE table1(
    COLUMN1 INT NOT NULL, 
    COLUMN2 VARCHAR(50) NOT NULL, 
    CONSTRAINT unique_1 UNIQUE (column1, column2) 
) 

ALTER TABLE table1 ADD CONSTRAINT unique_1 UNIQUE(column1, column2) 
+1

這並不回答這個問題(現在我已經採取了適當的審視),因爲在這種情況下列的順序並不重要。 – DavidG

+0

感謝您的回覆,雖然這並沒有解決我的問題,因爲我想要交換地使用唯一的密鑰約束,這意味着如果我們曾經分別在(FK_Key1,FK_Key2)中插入(2,6),那麼我們不應該能夠插入( 2,6)或(6,2)。 – user4365176

2

創建一個計算列,並在其上的唯一約束。訣竅是,我們要計算列有兩種(2),(6)和相同價值(6),(2)

create table #t (a int, b int, 
    uq_col as (case when a>b then cast(a as varchar)+'|'+cast(b as varchar) else cast(b as varchar)+'|'+cast(a as varchar) end), 
    constraint uq_t__a_b unique(uq_col))