温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

唯一约束可空吗

发布时间:2026-10-17 11:20:25 来源:亿速云 阅读:134 作者:小樊 栏目:数据库

可以,唯一约束(UNIQUE constraint)是允许包含 NULL 值的,但具体行为取决于数据库类型:

1. 主流数据库(MySQL / PostgreSQL / SQL Server / Oracle 等)

  • NULL 不参与唯一性判断
  • 可以有多个 NULL 值
  • 只有非 NULL 值之间不能重复

示例:

CREATE TABLE user (
  id INT,
  email VARCHAR(100) UNIQUE
);

✅ 允许:

INSERT INTO user VALUES (1, NULL);
INSERT INTO user VALUES (2, NULL);

❌ 不允许:

INSERT INTO user VALUES (3, 'a@x.com');
INSERT INTO user VALUES (4, 'a@x.com');

2. 例外情况

  • Oracle(某些历史版本/配置):
    • 多个 NULL 也被视为“不唯一”(视实现而定)
  • 复合唯一约束:
    • 只要所有列都为 NULL,通常不算重复
    • 部分列为 NULL 时,按实际值判断

3. 如果你“不允许多个 NULL”

通常需要:

  • 使用 CHECK 约束
  • 或设为 NOT NULL + UNIQUE
email VARCHAR(100) NOT NULL UNIQUE

总结

✅ 唯一约束 可空
✅ 一般允许多个 NULL
❌ 不允许多个相同的非 NULL 值

如果你说的是某个具体数据库(MySQL / Oracle / PostgreSQL 等),我可以给你更精确的规则。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手