SQL复杂的唯一约束

ura*_*ash 1 sql postgresql sqlalchemy unique-constraint

我有一个表mytable,其中是2个唯一的int字段

# SQLAlchemy example
mytable = Table('mytable', meta,

# per-column anonymous unique constraint
Column('col1', Integer, unique=True),
Column('col2', Integer, unique=True),

# explicit/composite unique constraint.  'name' is optional.
UniqueConstraint('col1', 'col2', name='uix_1')
)
Run Code Online (Sandbox Code Playgroud)

怎么做这样的限制:

col1 col2
1      
2     6
3     1
4     5
5
6     1 -- FAIL: becouse 3-1 is exist and 2-6 is exist!!!

unique((col1,col2)union(col2,col1))

Wol*_*lph 5

你可以使用这样的东西作为约束:

create table example (
    col1 integer,
    col2 integer,
    CHECK (col1 < col2),
    UNIQUE(col1, col2)
);
Run Code Online (Sandbox Code Playgroud)

如果你想让它自动使col1小于col2,请使用触发器:)