mysql - 怎样保证一组数据只能对其中一个设为true?
怪我咯
怪我咯 2017-04-17 13:53:10
[MySQL讨论组]
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。
有什么好的方案限制?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(2)
PHPz

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

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

伊谢尔伦

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

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号