如何在表中添加此条件?

时间:2016-06-08 05:17:09

标签: sql-server sql-server-2008

我想创建一个存储USERNAMEDOMAIN的表(两者都是同一个表的列号)。 一个用户只能属于一个域。

并且The Domain值可以存储在另一个表中,我们可以将其称为" LIST"。

2 个答案:

答案 0 :(得分:1)

users表格domain_id中设置(与域名相关),然后对两列(usernamedomain_id)使用约束。

MySql示例: ALTER TABLE users ADD UNIQUE unique_index (username, domain_id);

P.S。在SQL服务器中查找模拟。 (参见评论中的例子)

答案 1 :(得分:0)

我建议使用这种脚本来创建表格并根据它们确定条件:

--Create table that will store domains
CREATE TABLE DICT_DOMAINS (
    DomainID int IDENTITY(1,1),
    DomainName nvarchar(255),
CONSTRAINT [PK_DICT_DOMAINS] PRIMARY KEY CLUSTERED (DomainID ASC)
)
--DomainNames must be unique so we add non clustered index
CREATE UNIQUE NONCLUSTERED INDEX [UX_DICT_DOMAINS_DomainName] ON DICT_DOMAINS (DomainName ASC)
--Create table to store users and there domains
CREATE TABLE USERS_DOMAINS (
    DomainID int,
    UserName nvarchar(255)
)
--Add foreign key to DICT_DOMAINS table
ALTER TABLE USERS_DOMAINS WITH CHECK ADD CONSTRAINT [FK_USERS_DOMAINS_DICT_DOMAINS] FOREIGN KEY (DomainID)
REFERENCES DICT_DOMAINS (DomainID)

--Usernames must be uniq, no need to add DomainsId to this index
--This is sufficient to provide condition that
--One User can only belong to one domain.
CREATE UNIQUE NONCLUSTERED INDEX [UX_USERS_DOMAINS_UserName] ON USERS_DOMAINS (UserName ASC)