gdu*_*ubs 1 sql-server primary-key sql-server-2008
我在向表中添加另一个主键时遇到问题.我有3列:
当我创建表格时,我有这个使帐户ID和电子邮件ID唯一.
PRIMARY KEY (AccountID, EmailID)
Run Code Online (Sandbox Code Playgroud)
我认为这会让我的emailid变得独一无二,但是在我尝试使用相同的emailid插入另一行后,它就完成了.所以我以为我错过了一些东西.
现在我的问题:
您可以更改表并在EmailID列上添加新的UNIQUE CONSTRAINT.
-- This will create a constraint which enforces that the field EmailID
-- have unique values
ALTER TABLE Your_Table_Name
ADD CONSTRAINT unique_constraint_name UNIQUE (EmailID)
Run Code Online (Sandbox Code Playgroud)
但值得注意的是,更改表以添加此新的唯一约束并不意味着您必须删除为(AccountID,EmailID)对添加的其他PRIMARY KEY约束.当然,除非您的业务逻辑决定它,否则.
当您对(AcountID,EmailID)PRIMARY KEY进行分组时,它指定AcountID和EmailID都参与唯一标识该表中的每个单独记录.因此,这意味着您可以在表中包含以下记录:
AccountID | EmailID | Other Fields
----------------------------------------------------------
100 | user@company.com | ....
101 | user2@othermail.com | ....
100 | user_alternate@mail.com | ....
Run Code Online (Sandbox Code Playgroud)
在前面的示例中,可以有两个具有相同AccountID的记录,这是有效的,因为PRIMARY KEY指定只有(AccountID,EmailID)对必须是唯一的 - 它是唯一的.它没有规定AccountID是独立的.
总之,您可能希望在AccountID上添加另一个UNIQUE约束.或者只是将AccountID单独作为PRIMARY KEY,然后在EmailID上添加UNIQUE约束.
| 归档时间: |
|
| 查看次数: |
6404 次 |
| 最近记录: |