SQL 约束在两列中具有一个唯一值
我需要确保一个值在两列中是唯一的(这不是“两列”索引问题)。
Table A
Column A1 Column A2
Memphis New York -> ok
San Francisco Miami -> ok
Washington Chicago -> ok
Miami Las Vegas -> Forbidden ! Miami already exists
是否可以 ?
我的例子是城市,但不要集中于此。我真正需要的是生成的十六进制 ID。
I need to assure that a value is unique in two columns (this is not a "two columns" index issue).
Table A
Column A1 Column A2
Memphis New York -> ok
San Francisco Miami -> ok
Washington Chicago -> ok
Miami Las Vegas -> Forbidden ! Miami already exists
Is it possible ?
My example is with cities but don't focalize on that. My real need is about generated hexadecimal ids.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 SQL Server 中,可以借助索引视图来强制执行唯一性。您还需要一个与
表 A
位于同一数据库中的数字表(如果您还没有)。这是我的测试脚本,其中包含一些评论:
有用的阅读:
创建索引视图
“Numbers”或“Tally”表:它是什么以及它如何取代循环。
In SQL Server it is possible to enforce the uniqueness with the help of an indexed view. You will also need a numbers table (if you haven't already got one) in the same database as your
Table A
.Here's my testing script with some comments:
Useful reading:
Creating Indexed Views
The "Numbers" or "Tally" Table: What it is and how it replaces a loop.
您需要添加一个约束触发器,在插入/更新后查找它。
You need to add a constraint trigger that looks it up after insert/update.