我正在使用Java Jdbc connection
。
我的问题非常简单,我将员工记录插入员工表中 例如:
Insert into employee (emp_id,emp_name) values(10,'hello');
我如何获取子表(address
)的外键并插入它?
如果我使用select max(emp_id) from employee
并将id插入子表
我担心如果不止一个人尝试在employee表中插入值,并且我可能会为子表获取错误的员工ID。
是否有任何可能的方法在子表中插入员工ID。
注意:我需要一个sql查询来了解如何在子表中插入员工ID
答案 0 :(得分:0)
如果将记录插入到包含AUTO_INCREMENT列的表中,则可以通过调用mysql_insert_id()函数获取存储在该列中的值。
更多详细信息,请参阅此链接
https://dev.mysql.com/doc/refman/5.0/en/getting-unique-id.html
答案 1 :(得分:0)
你需要做几件事。
假设,employee
中的主键是而不是一个名为emp_id
的AUTO_INCREMENT,而您的插入就像Insert into employee (emp_id,emp_name) values(10,'hello');
一样:外键是10
。
但是:如果它真的是一个AUTO_INCREMENT,你一定不能为它指定任何值:
Insert into employee (emp_name) values('Veronica');
然后,您可以通过驱动程序或后续SQL语句检索上次生成的emp_id
值。在JAVA中,您需要告诉驱动程序,您希望返回最后生成的ID:
PreparedStatement pst = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
然后您就可以获取生成的主键:
ResultSet rset = pst.getGeneratedKeys();
Long emp_id;
if (rset.next()) {
emp_id = rset.getLong(1);
}
现在Long emp_id
包含要插入地址表的外键。