我想在地址表(子表)中插入员工ID - 多个概念

时间:2015-07-10 05:26:03

标签: java mysql sql database

我正在使用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

2 个答案:

答案 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包含要插入地址表的外键。