解决方法
如果您的数据库允许在索引中使用表达式,则可以执行以下操作(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));