我的数据库中有一个Product
表,其中包含以下列:
ProductId INT IDENTITY PRIMARY KEY
ProductCode VARCHAR(100) NOT NULL
ProductStamp VARCHAR(100) NOT NULL
我需要ProductCode和ProductStamp两者都是唯一的,例如:
允许的
Code Stamp
---- -----
A001 S001
A002 S002
不允许
Code Stamp
---- -----
A001 S001
A001 S002
如何实现这一目标?非常感谢你
答案 0 :(得分:4)
单个列的唯一约束:
ALTER TABLE Product ADD CONSTRAINT AK_Product_ProductCode UNIQUE( ProductCode )
ALTER TABLE Product ADD CONSTRAINT AK_Product_ProductStamp UNIQUE( ProductStamp )
如果有两行包含重复的产品代码或产品标记,则会产生错误。
多列的唯一约束:
ALTER TABLE Product ADD CONSTRAINT AK_Product_ProductCodeAndStamp UNIQUE( ProductCode, ProductStamp )
如果有两行代码并且标记相同,则会触发。
用于命名的约定“AK”代表“备用键”
答案 1 :(得分:1)
您需要添加唯一索引:
CREATE UNIQUE NONCLUSTERED INDEX [IX_NAME] ON [your_table]
(
ProductCode
) WITH IGNORE_DUP_KEY;
答案 2 :(得分:0)
根据您的需求,我建议您使用unique constraint或unique index到您需要数据库强制执行的唯一性的列。
请注意,唯一约束不会以任何方式编入索引,因此如果您在where子句(或联接)中使用了很多唯一列,则可能需要使用索引。
如果没有,就存储大小和插入/更新成本而言,唯一约束会更好。