开发者社区> 问答> 正文

mysql创建数据库的table时,如何加限定数量的插入?报错

mysql创建数据库的table时,有两个属性(公司名和电话号码),如何限定一个公司只能插入三个电话号码。我定义公司

branchno varchar(5)

constraint upto3

check(not exists(select branchno from

branch group by branchno having count(*)<4))

执行报错,然后我去掉了constraint upto3,执行不报错,但是我可以无限制的插入,插入第四个电话号码时,他都照样保存。

展开
收起
爱吃鱼的程序员 2020-06-06 15:04:24 681 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        为什么不是在业务上限制 
                    
    
                        代码层面上解决的东西 
                    
    
                        触发器可以解决,不过不建议使用,影响并发 
                    
    
                        <p>在页面数据插入数据库时检验一下,限制一下就可以了,没有必要在数据库上做.</p>
    
                    
    
                        <p>这个建议业务处理</p>
    
                    
    
                        <p>这个垃圾的字段约束就是个聋子的耳朵--排设,你可以添加约束执行不会曝异常,但就是不会生效 ^_^</p>
    
                    
    
                        <p>如果Oracle,我觉得可以使用Merge Into解决,Mysql不知道有没有相似的关键字。</p>
    

    另外,严格意义上讲,这个业务层是也是要加锁才能做到控制,和数据加锁是一样的。

    2020-06-08 11:22:32
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
基于云原生数据仓库AnalyticDB PG的最佳实践 立即下载
新氧云原生全栈数仓最佳实践 立即下载
离线实时一体化数仓与湖仓一体—云原生大数据平台的持续演进 立即下载

相关镜像