SQL多列UNIQUE约束作用及实现用户名与邮箱各自唯一的方法
实现用户表中用户名和邮箱各自唯一的UNIQUE约束
你当前使用的UNIQUE(username, email)是组合唯一约束,它仅限制username与email的组合值不能重复,因此会出现多个用户共用同一用户名或同一邮箱的情况,无法满足你的需求。
要让username和email各自独立保持唯一,需要为这两个字段分别添加独立的UNIQUE约束,有两种常用写法:
写法一:字段定义时直接添加约束
这种写法简洁直观,适合快速定义约束:
CREATE TABLE User ( id int PRIMARY KEY, username nvarchar(20) UNIQUE, email nvarchar(20) UNIQUE );
写法二:单独命名约束
这种写法可以给约束指定名称,方便后续对约束进行修改、删除等管理操作:
CREATE TABLE User ( id int, username nvarchar(20), email nvarchar(20), PRIMARY KEY (id), CONSTRAINT UQ_User_Username UNIQUE (username), CONSTRAINT UQ_User_Email UNIQUE (email) );
修改后,你之前尝试的插入操作中:
(2, 'aaron', 'aaron-email-2')会因username重复触发约束报错(4, 'bob', 'aaron-email')会因email重复触发约束报错
完全符合“用户名和邮箱各自唯一”的要求。
内容的提问来源于stack exchange,提问作者noblerare
相关产品推荐
相关产品推荐

