所以我想创建一列,比如说master_user,所以这个master_user列具有0和1的位值。我想要实现的是使它成为使得master_user列只有一个'1'值,因为只有一个master_user。您可以有多个“ 0”值,但不能有“ 1”。
在SQL Server中,您可以这样做:
CREATE UNIQUE NONCLUSTERED INDEX [IX_master_user] ON [user]
(
[master_user] ASC
)
WHERE ([master_user]=(1));
对于MySQL,我该怎么做?
谢谢。
更新:MySQL不支持过滤索引和条件索引
答案 0 :(得分:0)
最简单的方法可能是使用1
来指定主要用户,使用null
来指定非主要用户。由于null
不是值(缺少值),因此它们不参与唯一索引,而在unique
列上具有简单的master_user
索引就可以解决问题
如果绝对必须保留0,则可以添加一个生成的列,以null
替换0并使其唯一,以达到相同的效果:
CREATE TABLE users (
username VARCHAR(10) PRIMARY KEY,
master_user BIT NOT NULL,
master_user_nullable BIT AS (CASE master_user WHEN 1 THEN 1 END) STORED UNIQUE
);