假设我有一个像这样的货币表:
表is_main列保存有关考虑哪种货币的信息"主要货币"。
该表必须包含一种主要货币,但不能超过一种。
有没有一种优雅的方法来定义sql db本身(在本例中为H2)或
使用(java)应用程序层处理它会更好吗?
Andy提出的answer用于:"列x,当列y不等于0"时,它应该是唯一的。
我将需要定义为:"列x,当所有其他x记录等于0&#34时,它应该是唯一的。
甚至更好:"当col x为1时,将所有其他x记录设置为0"
我更喜欢通用的sql解决方案而不是特定的H2数据库解决方案。
答案 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名称。或者所有其他的大写和小写。它将在顶部排序。