Sql 使用两种形式将第一个表的主键的值转换为第二个表的外键

Sql 使用两种形式将第一个表的主键的值转换为第二个表的外键,sql,jsp,jakarta-ee,primary-key,database-connectivity,Sql,Jsp,Jakarta Ee,Primary Key,Database Connectivity,我创建了一个JSP页面来注册新用户。在注册表单中,有5个字段供用户输入详细信息 按下提交按钮后,他们将被带到另一页,在那里他们必须填写另一张表格,其中包括他们的一些其他详细信息。用户以第一种形式输入的数据被成功地插入到第一个表中,但当他们以第二种形式发送数据时,会出现一个错误提示 “java.sql.SQLException:字段'artist_id'没有默认值 价值观” 这里,atrist\u id是第一个表的主键,也是第二个表的外键。以下是注册和artist\u info 我应该如何更改

我创建了一个JSP页面来注册新用户。在注册表单中,有5个字段供用户输入详细信息

按下提交按钮后,他们将被带到另一页,在那里他们必须填写另一张表格,其中包括他们的一些其他详细信息。用户以第一种形式输入的数据被成功地插入到第一个表中,但当他们以第二种形式发送数据时,会出现一个错误提示

“java.sql.SQLException:字段'artist_id'没有默认值 价值观”

这里,
atrist\u id
是第一个表的主键,也是第二个表的外键。以下是注册和
artist\u info


我应该如何更改此代码以将
artist\u id
的值转换为第二个表的外键(artist\u id)。谢谢。

我猜这是因为如果将表中的字段设置为主键,它就不能为空。您似乎没有序列生成器,因此在尝试提交之前,必须在“艺术家信息”中设置艺术家id

因此,这里的解决方案是:

  • 在数据库中为此字段获取序列生成器
  • 不要忘记在艺术家信息中设置艺术家id
    两幅图像是相同的。我猜那个艺术家的id在报名表上?通常,在两个表中执行插入操作时,首先必须提交一个表,然后获取其id,然后提交新表。要么是这样,要么就是将外键设置为非空,以便在提交后可以将其设置为正确的值。我已放置了正确的图像。请再次检查:)
    try {
    
        String address_1 = request.getParameter("address_1");
        String address_2 = request.getParameter("address_2");
        String city = request.getParameter("city");
        String postal_code = request.getParameter("postal_code");
        String phone_number = request.getParameter("phone_number");
    
        Class.forName("com.mysql.jdbc.Driver");
        Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/painter?autoReconnect=true&useSSL=false", "root", "");
        Statement st = con.createStatement();
    
        //st.executeUpdate("insert into signup(uid,fname,lname,email,password,country)values('"+firstName+"','"+lastName+"','"+email+"','"+password+"','"+country+"')");
        st.executeUpdate("insert into artist_info(address_1,address_2,city,postal_code,phone_number)"
            + "values('" + address_1 + "','" + address_2 + "','" + city + "','" + postal_code + "','" + phone_number + "')");