我想在一个表中添加一个约束,其中任何时候只有一行可以存在某个列中的值。
例如 创建表MyTable .... status varchar(1); )
状态栏检查为“O”,“C”,“P”表示打开,关闭或待处理。
可以有多个Closed和Pending,但表中只有一行(或没有)可以打开。
任何指示赞赏。
答案 0 :(得分:3)
创建一个唯一的函数索引:
CREATE UNIQUE INDEX myindex ON mytable( CASE status WHEN 'O' THEN 'O' END );
它将阻止插入两个“O”值,但会允许其他重复值。