所以我想创建列让我们说 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 不支持过滤索引和条件索引
最佳答案
最简单的方法可能是使用 1
指定主用户,使用 null
指定非主用户。由于 null
不是值(它们是缺少值),它们不参与唯一索引,并且在 master_user 上有一个简单的
列就可以了。unique
索引
如果您绝对必须保留 0,则可以添加一个生成的列,将 0 替换为 null
并使其唯一,以达到相同的效果:
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
);
关于mysql - 如何不允许在数据库中复制特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54663424/