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
只是大概我的想法,尝试下