用户是一个人,一个人有一个公司-用户->人是一对一的,人->公司是多对一的.
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.
原文链接:https://www.f2er.com/mysql/532001.html