在设计表格时,有没有办法确保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
。
答案 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
。