如何避免在表类型sql server中为具有两行key-1和key-2的简单表插入重复记录

时间:2016-01-07 17:07:22

标签: sql sql-server

我创建了一个包含两列的简单表,比如Id-1和Id-2。

组合必须是唯一的,但这可以解决,因为它们是主键。

所以1,1 1,2 1,3被照顾。

但是如何避免不允许的组合2,1和1,2以及1,3和3,1?

1 个答案:

答案 0 :(得分:1)

创建另外两个基于第一列的最低值计算的列,然后在这两个计算列上放置一个唯一索引。

    CREATE TABLE [dbo].[Test1](
    [ID1] [int] NOT NULL,
    [ID2] [int] NOT NULL,
    [ID1A]  AS (case when [ID1]<[ID2] then [ID1] else [ID2] end),
    [ID2A]  AS (case when [ID1]>[ID2] then [ID1] else [ID2] end),
 CONSTRAINT [PK_Test1] PRIMARY KEY CLUSTERED 
(
    [ID1A] ASC,
    [ID2A] ASC
)