具有相同主ID的2个表不能彼此相等

时间:2016-01-21 12:42:50

标签: php mysql sql

我有2个用户表 - 一个用于员工,一个用于临时工。两者都有userid作为主键。我想确保一个上的新记录与另一个上的用户ID不匹配。我可以在我的PHP代码中执行此操作;但是我想知道MySQL中是否有限制来帮助确保这一点。 例如:
表1
userid - name - email - ...
bsmith - Bob Smith - ......

表2 userid - name - contracthouse - ...
jallen - Joe Allen - ...

如果我在表2中插入新的合同员工;是否有一个MySQL约束,将阻止我进入" bsmith" (这就是我想要的);或者只能在php代码中实现?

谢谢

1 个答案:

答案 0 :(得分:1)

你可以通过几种不同的方式解决这个问题。第一种方法是在插入检查时为每个表添加触发器,以查看正在插入的记录是否存在于另一个表中。如果是,你可以抛出异常。

第二种,也许更好的方法是重新设计你的桌子。您应该只有一个包含此数据的表,您可以将一个名为user_role的列或FK的列添加到包含用户角色值的查找表中:Full TimePart TimeTemporary等等......

您可以根据其角色类型或其他一些此类数据,拥有另一个包含用户扩展信息的子表。