两列上的唯一键是可交换的

时间:2017-02-13 13:42:02

标签: sql-server

请建议我如何比较在两列上应用唯一键。即假设我们有两列FK_Col1和FK_Col2,如果我们在两列中插入2和6,那么我们就不能再在两列中插入2和6或6和2。

Plaese建议我如何实现这一目标。

提前致谢

2 个答案:

答案 0 :(得分: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))

答案 1 :(得分: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)