在MySQL中,我可以在数据库级别设置如下限制吗?
我需要确保1。特定列只能接受'true‘或'false’值。2.并且恰好只有一行应该具有“true”值?
发布于 2010-07-12 20:40:17
您可以使用另一个表,它包含一行并指向原始表中您认为为true的行,而不是在表中使用boolean属性。
要更改真值,只需更新TrueRow表中的外键。
发布于 2017-07-14 01:54:22
在MySQL中,唯一索引将忽略任何NULL
值。所以这里有一些你可以使用的技巧。
您可以考虑添加一个可以为空的bit
列(它的值只能是1或0):
ALTER TABLE mytable
ADD COLUMN `is_default` BIT NULL,
ADD UNIQUE INDEX `is_default_UNIQUE` (`is_default` ASC);
此时,一行可能为1 ( TRUE ),尝试添加另一行也为TRUE将导致错误:
1062: Duplicate entry '\x01' for key 'is_default_UNIQUE'
唯一需要注意的是,所有其他行都需要为NULL
,并且不能为false,因为这也会被算作唯一值。
(这确实不是索引的本意)
发布于 2010-07-12 19:47:15
对boolean
或tiny-int
列使用数据类型
2并且恰好只有一行应该具有“true”值?
您必须编写一个查询,将除设置为true的行列之外的所有行列更新为false
https://stackoverflow.com/questions/3228161
复制相似问题