mysql创建数据库的table时,有两个属性(公司名和电话号码),如何限定一个公司只能插入三个电话号码。我定义公司
branchno varchar(5)
constraint upto3
check(not exists(select branchno from
branch group by branchno having count(*)<4))
执行报错,然后我去掉了constraint upto3,执行不报错,但是我可以无限制的插入,插入第四个电话号码时,他都照样保存。
为什么不是在业务上限制
代码层面上解决的东西
触发器可以解决,不过不建议使用,影响并发
<p>在页面数据插入数据库时检验一下,限制一下就可以了,没有必要在数据库上做.</p>
<p>这个建议业务处理</p>
<p>这个垃圾的字段约束就是个聋子的耳朵--排设,你可以添加约束执行不会曝异常,但就是不会生效 ^_^</p>
<p>如果Oracle,我觉得可以使用Merge Into解决,Mysql不知道有没有相似的关键字。</p>
另外,严格意义上讲,这个业务层是也是要加锁才能做到控制,和数据加锁是一样的。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。