甲骨文。约束一行具有特定值

sol*_*ind 1 sql oracle constraints

我想向一个表中添加一个约束,在该表中,任何时候都只能存在一行,并且某个列中有一个值。

例如创建表 MyTable .... status varchar(1); )

对状态列的检查将是 'O'、'C'、'P' 表示 open 、 closed 或 pending 。

可以有多个 Closed 和 Pending 但表中只有一个(或没有)行可以打开。

任何指针表示赞赏。

kro*_*lko 5

创建唯一的函数索引:

CREATE UNIQUE INDEX myindex ON mytable( CASE status WHEN 'O' THEN 'O' END );
Run Code Online (Sandbox Code Playgroud)

它会阻止插入两个“O”值,但会允许其他重复值。