在SQL中,创建表中的主键是否强制实现唯一性?

时间:2013-08-30 04:55:20

标签: sql sql-server unique-constraint composite-primary-key

我想知道是否在关系表上我将下面的两个值设置为PRIMARY KEY,如果这会自动使表知道所有条目都应该是唯一的....

CREATE TABLE UserHasSecurity
(
    userID int REFERENCES Users(userID) NOT NULL,
    securityID int REFERENCES Security(securityID) NOT NULL,
     PRIMARY KEY(userID,securityID)
)

或者我需要更加明确这样......

CREATE TABLE UserHasSecurity
(
    userID int REFERENCES Users(userID) NOT NULL,
    securityID int REFERENCES Security(securityID) NOT NULL,
     PRIMARY KEY(userID,securityID),
     UNIQUE(userID,securityID)
)

3 个答案:

答案 0 :(得分:2)

这里你不需要独特。 PRIMARY KEY将确保没有重复(userID,securityID)对。

答案 1 :(得分:1)

PRIMARY KEY必须是唯一的,因此您只需要声明为主键。根据定义,底层索引是唯一的。

Creating Unique Indexes

答案 2 :(得分:1)

不,除了UNIQUE之外,您无需指定PRIMARY KEY。根据定义,主键必须是唯一的。