首页 > 怎样保证一组数据只能对其中一个设为true?

怎样保证一组数据只能对其中一个设为true?

table A:
group    name    default
a    Jack1    1
a    Jack2    0
a    Jack3    0
b    Jack1    0
b    Jack2    0
b    Jack3    1
c    Jack1    1

表中有abc三个组,每个组只有一个数据(default)能被设置为1,并且保证至少有一个数据被设置为1。
有什么好的方案限制?


触发器可以做到 但是比较麻烦

最好还是在逻辑层面用事务实现


1.
SELECT SUM(default) FROM TableA WHERE group='A'
这语句的值赋给a变量,
获取你要插入/删除的记录的default值,与a做相应运算,结果大于1则继续操作,不然return false;

2.
利用事务处理,在数据库SETAUTOCOMMIT=0来关闭自动提交
再做我们相关操作
操作后查一查是否满足你自己设定的条件
要是满足就COMMIT,不满足就ROLLBACK,然后CLOSE这次事务处理,再把自动提交打开以保证其他程序运行正常
AUTOCOMMIT=1

只是大概我的想法,尝试下

【热门文章】
【热门文章】