我有2个用户表 - 一个用于员工,一个用于临时工。两者都有userid作为主键。我想确保一个上的新记录与另一个上的用户ID不匹配。我可以在我的PHP代码中执行此操作;但是我想知道MySQL中是否有限制来帮助确保这一点。
例如:
表1
userid - name - email - ...
bsmith - Bob Smith - ......
表2
userid - name - contracthouse - ...
jallen - Joe Allen - ...
如果我在表2中插入新的合同员工;是否有一个MySQL约束,将阻止我进入" bsmith" (这就是我想要的);或者只能在php代码中实现?
谢谢
答案 0 :(得分:1)
你可以通过几种不同的方式解决这个问题。第一种方法是在插入检查时为每个表添加触发器,以查看正在插入的记录是否存在于另一个表中。如果是,你可以抛出异常。
第二种,也许更好的方法是重新设计你的桌子。您应该只有一个包含此数据的表,您可以将一个名为user_role
的列或FK的列添加到包含用户角色值的查找表中:Full Time
,Part Time
, Temporary
等等......
您可以根据其角色类型或其他一些此类数据,拥有另一个包含用户扩展信息的子表。