我在这里是一个SQL新手,在创建表时我正在玩弄UNIQUE
约束.我显然没有理解一些基本的东西,所以请原谅我.
假设我想强制要求用户必须具有唯一的用户名和唯一的邮箱.换句话说,我不希望两个用户拥有相同的用户名,也不希望两个用户拥有相同的邮箱.
我有一个User
表的定义如下:
CREATE TABLE User
(
id int,
username nvarchar(20),
email nvarchar(20),
PRIMARY KEY (id),
UNIQUE(username, email)
);
使用上面定义的UNIQUE
约束,似乎以下插入将会成功:
INSERT INTO User (id, username, email)
VALUES
(1, 'aaron', 'aaron-email'),
(2, 'aaron', 'aaron-email-2'),
(3, 'bob', 'bob-email'),
(4, 'bob', 'aaron-email');
它强制用户名和邮箱的组合在中必须是唯一的,才能使约束生效.然而,这显然没有意义,因为现在我们有多个用户使用相同的用户名,多个用户使用相同的邮箱.
我们如何强制用户名和邮箱列必须是唯一的?