Mysql约束问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Mysql约束问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1653字,纯文字阅读大概需要3分钟。
内容图文
![Mysql约束问题](/upload/InfoBanner/zyjiaocheng/896/6d36df94e5384386ba4b2e3d3ee4a1e2.jpg)
我正在使用MySQL5.5,对于这个问题,我有3个简单的表t1,t2& t3设计如下:
+------------+ +------------+ +------------+
| t1 | | t2 | | t3 |
+------------+ +------------+ +------------+
| t1_id (PK) | | t2_id (PK) | | t3_id (PK) |
+------------+ | some_value | | t1_id (FK) |
+------------+ | t2_id (FK) |
+------------+
PK =主键,FK =外键,所有字段都是INT类型
我遇到的问题是我想向表t3添加一个涉及字段t2.some_value的约束.基本上我希望t1.t1_id和t2.some_value的组合在表t3中是唯一的.例如,这是我想避免的情况:
t1 t2 t3
+-------+ +-------+------------+ +-------+-------+-------+
| t1_id | | t2_id | some_value | | t3_id | t1_id | t2_id |
+-------+ +-------+------------+ +-------+-------+-------+
| 10 | | 20 | 1 | | 30 | 10 | 20 | <-- t2.some_value = 1
| 11 | | 21 | 2 | | 31 | 10 | 21 |
+-------+ | 22 | 3 | | 32 | 10 | 22 |
| 23 | 1 | | 33 | 10 | 23 | <-- t2.some_value = 1
+-------+------------+ | 34 | 11 | 23 |
+-------+-------+-------+
这里的问题是t3中的两个记录将相同的t1记录(t1_id = 10)链接到具有相同some_value的两个不同的t2记录.有没有办法防止这种情况发生?据我所知,MySql不允许定义跨多个表的约束.
我可以想到一个解决方案,但这涉及复制表t3中的some_value字段,因此我可以直接在其上强制执行唯一键.这显然违反了规范化设计规则,但还有其他方法吗?
解决方法:
据我所知,你必须在table3中创建’some_value’.这是manual page on foreign key constraints的链接
有一个“复杂”外键约束的示例与您的设置类似,它复制第三个表中的内容.知道嘿,至少它是由外键处理的(最小)舒适度.
内容总结
以上是互联网集市为您收集整理的Mysql约束问题全部内容,希望文章能够帮你解决Mysql约束问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。