我对这种情况的最佳做法有疑问: 我有一个mysql表包含(除了其他列)两个列都是TINYINT(1)但它们不能同时在0,它们可以是0和1,1和0,1和1但没有0和0。 控制它的最佳方法是什么?甚至可以控制这个?
编辑:我想我会选择ENUM选项,但如果我将mysql与Entity Framework结合使用会如何执行?
答案 0 :(得分:3)
我建议使用枚举,结合两个值。它们存储效率非常高。所以它会是enum('0;1','1;0','1;1') not null
。
编辑:
鉴于附加信息,并遵循@landons建议,仅为记录:枚举将是
delivery enum('physical', 'digital', 'both') not null;
你可以使用(也跟随@landon)
delivery SET('physical','digital');
但这会允许空值。
答案 1 :(得分:3)
我能想到的一些选择:
我个人可能会使用最后一种方法。
修改强>
刚刚意识到 - SET
数据类型完美地实现了这一点。
答案 2 :(得分:0)
一种解决方法是将两列合并到一个BIT(2)列中,然后在执行更新时,您可以测试您没有将列更新为b'00'。
对于内置预防,我不相信有办法做到这一点。
答案 3 :(得分:0)
也许你可以通过将它们放在一列来实现这一目标。
1
2
您的列可能包含值1
,2
或3
。当它是0
时,它们都是。{/ p>
使用2
和3
,第二个数字为1
。对于1
和3
,第一个数字为1
。