依赖于sql db中所有其他表记录的记录

时间:2015-12-14 06:55:05

标签: sql

假设我有一个像这样的货币表:

enter image description here

表is_main列保存有关考虑哪种货币的信息"主要货币"。
该表必须包含一种主要货币,但不能超过一种

有没有一种优雅的方法来定义sql db本身(在本例中为H2)或 使用(java)应用程序层处理它会更好吗?

Andy提出的answer用于:"列x,当列y不等于0"时,它应该是唯一的。

我将需要定义为:"列x,当所有其他x记录等于0&#34时,它应该是唯一的。
甚至更好:"当col x为1时,将所有其他x记录设置为0" 我更喜欢通用的sql解决方案而不是特定的H2数据库解决方案。

2 个答案:

答案 0 :(得分:1)

我实际上会将主要货币保存在第二个表格中:

create table settings (key char(255), val char(255)). 

你存储了一个键值对,比如main_currency =' USD'等等。然后,您可以进行类似

的查询
select * from currencies left join settings where settings.val=currencies.iso_name and settings.key='main_currency'

答案 1 :(得分:-2)

例如,使用lowecase作为默认货币的ISO名称。或者所有其他的大写和小写。它将在顶部排序。