Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想在地址表(子表)中插入员工id—一对多概念_Java_Mysql_Sql_Database - Fatal编程技术网

Java 我想在地址表(子表)中插入员工id—一对多概念

Java 我想在地址表(子表)中插入员工id—一对多概念,java,mysql,sql,database,Java,Mysql,Sql,Database,我正在使用javajdbc连接 我的问题很简单,我将employee记录插入到employee表中 例: 如何获取子表(address)的外键并将其插入 如果我使用从employee中选择max(emp_id)并将id插入子表中 我担心如果不止一个人尝试在employee表中插入值,那么我可能会为子表获取错误的employee id。 是否有任何可能的方法在子表中插入员工id 注意:我需要一个sql查询,了解如何在子表中插入员工id如果将记录插入到包含自动增量列的表中,则可以通过调用mysql\

我正在使用
javajdbc连接

我的问题很简单,我将employee记录插入到employee表中 例:

如何获取子表(
address
)的外键并将其插入

如果我使用
从employee
中选择max(emp_id)并将id插入子表中 我担心如果不止一个人尝试在employee表中插入值,那么我可能会为子表获取错误的employee id。 是否有任何可能的方法在子表中插入员工id


注意:我需要一个sql查询,了解如何在子表中插入员工id

如果将记录插入到包含自动增量列的表中,则可以通过调用mysql\u insert\u id()函数获取存储在该列中的值

更多详情请参阅此链接


你需要做几件事

假设,
employee
中的主键不是名为
emp\u id
的自动递增键,而是插入类似
Insert-into-employee(emp\u id,emp\u name)的值(10,'hello')完成:外键为
10

但是:如果它确实是自动增量,则不能为其指定任何值:

插入员工(emp_name)值(“Veronica”)

然后,您可以通过驱动程序或后续SQL语句检索最后生成的
emp\u 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\u id
包含要插入地址表的外键。

对于子表示例:插入地址(外键\u员工\u id、门号、街道名称);是的,我只需要自动增量OP想要JAVA,而不是PHP?问题被标记为
JAVA
,因此OP想要JAVA代码而不是PHP函数
mysql\u insert\u id()
不是任何JAVA“函数”(因为JAVA中根本没有函数)。手册中的链接示例显示了一个
C
代码片段。您的回答非常有用,因此在这种情况下,即使多个用户尝试插入记录,也不会获取错误的员工id,对吗?是的。驱动程序确保从单个实例的角度来看这是原子的。
 ResultSet rset = pst.getGeneratedKeys();
 Long emp_id;
 if (rset.next()) {
    emp_id = rset.getLong(1);
 }