SQL在创建表时只允许表的属性上有一个特定值

SQL在创建表时只允许表的属性上有一个特定值,sql,postgresql,Sql,Postgresql,我想知道在sql中是否有一种方法允许一个列的属性具有它想要的任何值,但其中只有一个可以是X值 更具体地说,为了便于解释,假设我有: 创建表状态(当前状态varchar(100),id整数) 我应该添加什么约束,以便我最多只能有一个当前_status='ACCEPTED'的值 编辑:删除mysql标签 您需要一个触发器,只要您不能使用唯一约束来实现这一点。在状态(当前状态)上创建唯一索引ui@VaoTsun否,因为他要求“允许列的属性具有它想要的任何值,但其中只有一个可以是X值”。唯一约束只允许任

我想知道在sql中是否有一种方法允许一个列的属性具有它想要的任何值,但其中只有一个可以是X值

更具体地说,为了便于解释,假设我有:

创建表状态(当前状态varchar(100),id整数)

我应该添加什么约束,以便我最多只能有一个当前_status='ACCEPTED'的值

编辑:删除mysql标签


您需要一个触发器,只要您不能使用唯一约束来实现这一点。
在状态(当前状态)上创建唯一索引ui@VaoTsun否,因为他要求“允许列的属性具有它想要的任何值,但其中只有一个可以是X值”。唯一约束只允许任何类型的一个值。对于PostgreSQL:A可以这样做。你可以用
WHERE(current_status='ACCEPTED')
对任何表达式进行索引——但我不确定你为什么要标记多个供应商。Postgresql和MySQL是两种具有不同功能的不同产品。你用哪一种?或者,如果您同时使用这两种方法,那么您是否需要一个能够跨这两种方法工作的单一解决方案?这只适用于postgresql,在MySQL中不起作用。谢谢您,我再次道歉,因为我有两个标签。我现在的问题是pgSQL,所以它解决了我的问题
create unique index index_accepted on status (current_status)
where current_status = 'ACCEPTED'