SQL只有列中的一个单元格可以具有X值

时间:2015-06-22 18:40:33

标签: mysql sql

在设计表格时,有没有办法确保SQL,MySQL,只有X列中的一个单元格为true,其余单元格是false?当您将其他单元格的值更改为true时,所有其他单元格应自动变为false。一种单选按钮类型,但对于列。

mainOfferName | value
---------------------
pizza         | false
spaghetti     | false
salad         | true
stew          | false

更换披萨作为主要优惠时,您可以获得以下内容:

mainOfferName | value
---------------------
pizza         | true
spaghetti     | false
salad         | false
stew          | false

我可以手动运行查询并确保在任何给定时间只有一个值为true,但我很好奇是否可以将约束放入我的表中以便我只更改我需要的行/单元格到true,数据库引擎只负责保留该值true

1 个答案:

答案 0 :(得分:2)

有一个单独的表,其中一行包含您想要的行的mainOfferName。然后查询为:

select yt.*, (nt.mainOfferName is not null) as valueFlag
from yourtable yt left join
     newtable nt
     on yt.mainOfferName = nt.mainOfferName;

如果要更改值,请更改newtable中的值。

注意:您可以将查询放入视图中,只读用户也可以使用。

并且,您可以在update上使用yourtable触发器实现此功能。它不会更新yourtable,而是更新newtable