sol*_*ind 1 sql oracle constraints
我想向一个表中添加一个约束,在该表中,任何时候都只能存在一行,并且某个列中有一个值。
例如创建表 MyTable .... status varchar(1); )
对状态列的检查将是 'O'、'C'、'P' 表示 open 、 closed 或 pending 。
可以有多个 Closed 和 Pending 但表中只有一个(或没有)行可以打开。
任何指针表示赞赏。
创建唯一的函数索引:
CREATE UNIQUE INDEX myindex ON mytable( CASE status WHEN 'O' THEN 'O' END );
Run Code Online (Sandbox Code Playgroud)
它会阻止插入两个“O”值,但会允许其他重复值。