2列组合的sql唯一约束

前端之家收集整理的这篇文章主要介绍了2列组合的sql唯一约束前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何在两列中的两个值的组合上创建唯一约束.

含义

column1  column2 
   2        1

寻找禁止的约束

column1  column2 
   1        2

解决方法

如果您的数据库允许在索引中使用表达式,则可以执行以下操作(ANSI sql):
CREATE UNIQUE INDEX on your_table (least(column1,column2),greatest(column1,column2));

请注意,这是唯一的索引,而不是唯一约束.大多数DBMS的唯一区别是您不能将唯一索引作为外键的目标,但除此之外它们用于相同的目的.

如果您的DBMS没有least()或most(),您可以使用CASE表达式替换它:

create unique index on your_table 
  (case column1 < column2 then column1 else column2 end,case column2 > column1 then column2 else column1 end));

猜你在找的MsSQL相关文章