UNIQUE约束的使用:
强制执行独特性. 尽管生成的GUID很可能是唯一的,但您可以轻松地在多行中插入相同的GUID.当然你可以错误地做到这一点,但这甚至可能是你设计的一部分,例如多对多表中的复合键约束.
CREATE TABLE BookAuthors (
guid INT PRIMARY KEY,
BookGuid INT NOT NULL,
AuthorGuid INT NOT NULL,
FOREIGN KEY (BookGuid) REFERENCES Books(BookGuid),
FOREIGN KEY (AuthorGuid) REFERENCES Authors(AuthorGuid),
UNIQUE KEY (BookGuid, AuthorGuid)
);
Run Code Online (Sandbox Code Playgroud)成为外键的目标. 您可能习惯于FOREIGN KEY引用父表的PRIMARY KEY.你知道FOREIGN KEY还可以引用一个独特的键吗?
CREATE TABLE Acknowledgements (
guid INT PRIMARY KEY,
BookGuid INT NOT NULL,
AuthorGuid INT NOT NULL,
Acknowledged VARCHAR(100) NOT NULL,
-- this works because of the UNIQUE constraint in BookAuthors:
FOREIGN KEY (BookGuid, AuthorGuid)
REFERENCES BookAuthors (BookGuid, AuthorGuid)
);
Run Code Online (Sandbox Code Playgroud)性能. 正如其他人所指出的那样,UNIQUE是一种约束,但在大多数品牌的数据库中,当您定义UNIQUE,PRIMARY KEY或FOREIGN KEY约束时,隐式索引.你插入任何索引表时会有一些开销是正确的,但索引的性能优势是净赢,通常是很多次.
唯一性尽管是NULL.虽然主键对于使用标识表中的行至关重要,但它们不允许NULL.您可以使用UNIQUE约束来强制可空列中的唯一性.
| 归档时间: |
|
| 查看次数: |
1507 次 |
| 最近记录: |