我可以在表中创建一个列只允许一个'true'值而所有其他行应该是'false'

Red*_*ddy 21 mysql

在MySQL中,我可以在数据库级别添加如下限制吗?

我需要确保1.特定列只能采用"true"或"false"值.2.而且只有一行应该具有"真实"价值?

Gil*_*anc 18

您可以使另一个表包含一行并指向原始表中您认为为true的行,而不是在表中包含boolean属性.

更改真值是更新TrueRow表中的外键的问题.


Roy*_*ong 5

在MySQL中,唯一索引将忽略任何NULL值。因此,您可以使用一些技巧。

您可以考虑添加可为空的bit列(其值只能为1或0):

ALTER TABLE mytable 
  ADD COLUMN `is_default` BIT NULL,
  ADD UNIQUE INDEX `is_default_UNIQUE` (`is_default` ASC);
Run Code Online (Sandbox Code Playgroud)

此时,一行可以是1(TRUE),并且尝试添加另一行也为TRUE将导致错误:

1062: Duplicate entry '\x01' for key 'is_default_UNIQUE'
Run Code Online (Sandbox Code Playgroud)

唯一要注意的是,所有其他行都必须是NULL且不能为假,因为这也将视为唯一值。

表格数据示例

(虽然这实际上不是索引要使用的内容)