【问题标题】:How do I not allow a specific value duplicating in the database如何不允许在数据库中重复特定值
【发布时间】:2019-02-13 05:53:21
【问题描述】:

所以我想创建列,比如说 master_user,所以这个 master_user 列有位值 0 和 1。我想要实现的是使 master_user 列只有一个“1”值,因为只有一个主用户。您可以有多个“0”值,但不能有“1”。

在 SQL Server 中,您可以这样做:

CREATE UNIQUE NONCLUSTERED INDEX [IX_master_user] ON [user]
(
    [master_user] ASC
)
WHERE ([master_user]=(1));

我如何为 MySQL 做同样的事情?

谢谢。

更新:MySQL 不支持过滤索引和条件索引

【问题讨论】:

  • 我建议阅读 mysql if operator 文档并查看 here 作为示例。
  • 谢谢,但我想创建一个预定义的列,该列具有不允许重复位 '1' 的属性。

标签: mysql sql unique-key


【解决方案1】:

最简单的方法可能是使用1 指定主用户,使用null 指定非主用户。由于nulls 不是值(它们缺少值),它们不参与唯一索引,并且在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
);

【讨论】:

    猜你喜欢
    • 2013-03-28
    • 2018-01-08
    • 2020-06-11
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 2015-05-03
    相关资源
    最近更新 更多