-1

我有以下内容:

create table dbo.Users
(
  Id int identity not null 
    constraint PK_Users_Id primary key clustered (Id),  
  Email nvarchar (120) not null
    constraint UQ_Users_Email unique (Email),
  Username nvarchar (120) not null
    constraint UQ_Users_Username unique (Username)
);

我可以设置约束以使电子邮件和用户名相等吗?

谢谢你,米格尔

4

2 回答 2

4

以下是直接解决该问题的适当 SQL:

create table dbo.Users
(
  Id int identity not null 
    constraint PK_Users_Id primary key clustered (Id),  
  Email nvarchar (120) not null
    constraint UQ_Users_Email unique (Email),
  Username nvarchar (120) not null
    constraint UQ_Users_Username unique (Username)      
);


alter table dbo.Users add constraint CK_EmailEqualsUsername
check (username = email)

A,最有可能更好,更常见的方法是在调用堆栈中更高的位置执行比较(不同的层,例如:表示层/域层/服务层)

于 2013-11-04T18:33:54.693 回答
1

试试这个代码:

alter table dbo.Users
add constraint ck_us check(Email=Username)
于 2013-11-04T18:37:02.177 回答