【发布时间】:2015-12-14 06:55:05
【问题描述】:
假设我有一个像这样的货币表:
表格 is_main 列包含有关将哪种货币视为“主要货币”的信息。
表格必须包含一种主要货币,但不能超过一种。
是否有一种优雅的方法可以在 sql db 本身(在本例中为 H2)或
使用(java)应用层处理会更好吗?
Andy 提出的answer 用于:
“当列y 不等于0 时应唯一的x 列”。
我会将需求定义为:
“当所有其他 x 记录都等于 0 时,应该是唯一的列 x”
甚至更好:“当 col x 为 1 时,将所有其他 x 记录设置为 0”
我更喜欢通用的 sql 解决方案,而不是特定的 H2 数据库解决方案。
【问题讨论】:
-
我不确定它是否重复。当我有多个值为 0 的记录(其中 !is_main )时,我看不到如何使用 unique
-
你读过我链接的帖子吗?是否清楚地说明了那里的 条件 唯一索引:“当列
y不等于 0 时应该是唯一的列x” - 这正是你的情况。 -
是的,我当然读过。它可以帮助我寻找我需要的东西。使用您建议的术语,我将需求定义为:“当所有其他 x 记录等于 0 时,列 x 应该是唯一的”甚至更好:**“当 col x 为 1 时,将所有其他 x 记录设置为 0”
-
@OferYuval 如果我理解正确,the other answer 和你的问题之间的区别是你也想要强制至少总是一种主要货币? Here's a duplicate on dba.se.
标签: sql