唯一约束的可用性

时间:2019-02-14 14:56:09

标签: sql constraints unique

我想问一下在哪种情况下可以在SQL中使用UNIQUE关键字。我知道,如果我声明一列作为主键本身具有唯一性,但是其他属性(如国家/地区)会怎样?在此使用唯一约束是否合适?

3 个答案:

答案 0 :(得分:3)

只要您希望该列的每一行条目都彼此不同,就使用sql中的unique关键字。主键列自动是唯一的,但是在某些情况下,您可能希望更多列是唯一的。

例如,如果您有一个product_id作为主键,它将确保没有其他行具有product_id作为该行的产品。此外,您不希望两行具有相同的product_imei,然后可以使product_imei唯一。

您可以使用Primary Key(column1,column2)之类的复合主键,但这意味着从product_idproduct_imei获得的组合将是唯一的。

例如 如果(DLK-22,356938035643809)是主键,则(DLK-22, 11111111111111)(product_id,product_imei)都可以存在于表中。

因此,您可以在任意数量的列上使用unique约束,其约束取决于所面临问题的情况。如果有帮助,您可以将unique约束与country一起使用,这样做没有问题

答案 1 :(得分:2)

UNIQUE约束确保一列中的所有值都不同。 UNIQUE和PRIMARY KEY约束都为一列或一组列的唯一性提供了保证。 PRIMARY KEY约束自动具有UNIQUE约束。

答案 2 :(得分:1)

与任何其他约束一样,UNIQUE约束会强制执行某种程度的数据质量。如果将此约束添加到列,则该列上的所有值都将不同。

例如,在EMPLOYEE_PK已经是唯一的表(因为它是PK)上,您可能要强制执行CARD_NUMBER列也是唯一的;那是员工卡上显示的数字。在您的模型中,卡号可能与PK不同,并且您可能还需要确保其唯一性。

UNIQUE约束的另一个额外好处是其他表可以将外键链接到它。由于UNIQUE列有效地充当“表键”,因此任何其他表都可以建立指向它的外键。我遇到了很多人,他们[错误地]认为外键只能指向主键。