我有 2 个用户表 - 一个用于员工,一个用于临时工。两者都以 userid 作为主键。我想确保一个上的新记录与另一个上的用户标识不匹配。我可以在我的 php 代码中做到这一点;但我想知道 MySQL 中是否有有助于确保这一点的限制。
例如:
表一
用户 ID - 姓名 - 电子邮件 - ...
bsmith - 鲍勃·史密斯 - ...
表2
userid - name - contracthouse - ...
贾伦 - 乔艾伦 - ...
如果我在表 2 中插入一个新的契约(Contract)工;是否有一个 MySQL 约束会阻止我输入“bsmith”(这是我想要的);还是只能在 php 代码中实现?
谢谢
最佳答案
您可以通过几种不同的方式来解决这个问题。第一个是向每个表添加触发器,在插入时检查是否插入的记录存在于另一个表中。如果是,您可以抛出异常。
第二种方法,也可能是更好的方法是重新设计您的表格。你应该只有一个表来保存这些数据,你可以添加一个名为 user_role
的列或 FKs 的东西到包含用户角色值的查找表:Full Time
, 兼职
, 临时
等...
您可以有一个进一步的子表,其中包含基于用户角色类型或其他一些此类数据的有关用户的扩展信息。
关于php - 具有相同主 ID 的 2 个表不能彼此相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34924178/