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

标签 php mysql sql

我有 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/

相关文章:

php - cakephp数据编辑和更新时如何从网站根目录中删除图像

php - PDOStatement 对象和 MySQL 用户定义变量

php - 我如何使用 Nginx 列出目录及其文件?

c# - 使用 C# sql 对表的特定列的行进行求和

java - 在HQL中运行Oracle SQL存储过程

php - Cakephp 3 - 从数据库中减去一个值

java - jsprit 作为 php Web 应用程序的后端

mysql - 在 mysql 中,cast() str_to_date() 和 varchar 哪个更快更好,为什么

mysql - 是否可以在 MySQL 中获取表的整数值?

sql - PLSQL - 如何查找给定日期的星期一和星期五