ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

在MySQL中跨链接表实现UNIQUE

2019-12-10 14:16:35  阅读:307  来源: 互联网

标签:database-design constraints data-modeling sql mysql


用户是一个人,一个人有一个公司-用户->人是一对一的,人->公司是多对一的.

person_id在USER表中为FK.
company_id在PERSON表中为FK.

一个人可能不是用户,但用户始终是一个人.

如果company_id在用户表中,则可以基于username和company_id创建一个唯一键,但是不是,如果是,它将是数据的重复.

目前,我正在RoseDB Manager包装器代码中实现唯一的用户名/公司ID规则,但感觉不对.如果可以的话,我想在数据库级别定义唯一规则,但是我不确定如何实现.我尝试过这样的事情:

alter table user add unique(used_id,person.company_id);

但这不起作用.

通过阅读文档,我找不到一个可以完成几乎所有相似操作的示例.我是在尝试添加不存在的功能,还是在这里缺少某些功能?

解决方法:

好吧,没有简单的事情可以满足您的需求.但是,您可以使用BEFORE INSERT和BEFORE UPDATE triggers强制实施所需的约束.有关如何处理使触发器失败的信息,请参见this SO question about raising MySQL errors.

标签:database-design,constraints,data-modeling,sql,mysql
来源: https://codeday.me/bug/20191210/2102037.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有