我正在建立员工页面。
有些信息会进入“员工”表格,但有些信息会进入“可用性”表格,该表格会引用“员工”表格:
可用性: id / employeeid(来自employees表的唯一ID)/ monday available /以及on on和on /
因此,在创建员工表之前,我没有该员工表中的唯一ID。
在我设置员工信息然后查询以获取员工表中最后创建的行,然后使用其中的唯一ID来设置可用性时,可以进行查询吗?
或者是那么混乱,我应该有一个创建员工页面,然后是一个设置可用性页面吗?
所以基本上我想知道它是否更清晰,更好'编码来分离这两个功能?
答案 0 :(得分:3)
添加@ Quassnoi的回答:
您可以添加员工记录,然后使用MySQL LAST_INSERT_ID()
功能查找您添加的employee
记录的自动增量唯一ID。然后,您可以将该值反馈回availability
INSERT
语句。
更多详细信息,请参见http://dev.mysql.com/doc/refman/5.1/en/example-auto-increment.html
的MySQL手册页重要的是不要使用SELECT语句(例如SELECT MAX(employee.id)
),因为可能还有其他用途添加记录。 LAST_INSERT_ID()
特定于您的连接
答案 1 :(得分:1)
当然先创建employee
,然后再创建availability
。
如果您的表是InnoDB
,您可以在事务中执行此操作,以便在出现问题时可以回滚整个更新。
答案 2 :(得分:1)
在我设置的地方进行查询是否可以 员工信息,然后查询 获取最后创建的行 员工表然后使用唯一 id来自那个设置 可用性...
是的,听起来不错。如果对employeeid使用自动增量列,则可以使用mysql_insert_id()或等效项来安全地检索最后插入的ID。不要SELECT MAX(employeeid) FROM ....
,因为当大量人员同时使用它时,您可能会遇到问题。
答案 3 :(得分:1)
您可以通过
轻松获取最后一个未记录的记录mysql_insert_id()
之后,您可以插入所需员工的可用性记录。 注意:我会选择一个处理这些问题的框架,比如Symfony或Cake。
答案 4 :(得分:1)
使用“最后创建的行”可能并不总是以您期望的方式工作,如果有增长或者另一个程序员承担该项目,将来可能会使事情复杂化。如果我理解你在寻找什么,你应该有3个表。应使用一个员工表,一个可用表和第三个表来存储关联的唯一记录。在关联表中,每一行都有以下列:唯一ID,员工ID,可用性ID。