Java 如何在spring中编写一个查询,将记录插入Mysql数据库的2个表中
我想写一个查询,将数据插入两个表中 我正在将数据插入两个表中,即Java 如何在spring中编写一个查询,将记录插入Mysql数据库的2个表中,java,mysql,sql,jdbc,Java,Mysql,Sql,Jdbc,我想写一个查询,将数据插入两个表中 我正在将数据插入两个表中,即User和company。 用户具有外键公司id。表结构已给出 用户表 int用户标识;(AI) 国际公司id;(外键) 字符串用户名 字符串用户_电子邮件 公司表 国际公司id;(AI) 字符串公司名称 - 我犯了一个错误 company_id cannot be null. 这可能是因为在user表中,您的company\u id设置为notnull。如果希望外键为空,则必须从user表的表创建语句中的company\
User
和company
。
用户
具有外键公司id
。表结构已给出
用户表
- int用户标识;(AI)
- 国际公司id;(外键)
- 字符串用户名李>
- 字符串用户_电子邮件李>
- 国际公司id;(AI)
- 字符串公司名称李>
company_id cannot be null.
这可能是因为在
user
表中,您的company\u id
设置为notnull
。如果希望外键为空,则必须从user
表的表创建语句中的company\u id
列中删除not null
。否则,您必须为外键提供一个值。由于外键公司id
不能为null
,公司必须存在于数据库中,并且在插入用户之前必须知道其id
更新
要插入新用户,您需要:
- 用户名
- 电子邮件地址
- 公司名称
公司id
中搜索给定的公司名称。如果在数据库中找不到,将插入一个新公司
public void insertUser(String userName, String userEmail, String companyName)
throws SQLException {
int companyId = getOrInsertCompany(companyName);
try (PreparedStatement stmt = cnt.prepareStatement(
"insert into User(company_id,user_name,user_email)"
+ " values(?,?,?)")) {
stmt.setInt(1, companyId);
stmt.setString(1, userName);
stmt.setString(1, userEmail);
stmt.executeUpdate();
}
}
private int getOrInsertCompany(String companyName) throws SQLException {
try (PreparedStatement stmt = cnt.prepareStatement(
"select company_id from Company where company_name=?")) {
stmt.setString(1, companyName);
try (ResultSet rs = stmt.executeQuery()) {
if (rs.next()) {
return rs.getInt(1);
}
}
}
// the company was not found; insert it
try (PreparedStatement stmt = cnt.prepareStatement(
"insert into Company(company_name) values(?)")) {
stmt.setString(1, companyName);
stmt.execute();
try (ResultSet rs = stmt.getGeneratedKeys()) {
if (!rs.next()) {
throw new SQLException(
"Could not get generated keys");
}
return rs.getInt(1);
}
}
}
检查notnull约束
SELECT * FROM INFORMATION_SCHEMA.COLUMNS where table_name = 'user' and column_name = 'company_id';
如果is_nullable的值为NO
,则不能插入null值
或者,将约束更改为NULL
,或者验证公司id的值(非NULL值)
将约束从NOT NULL更改为NULL的语法
ALTER TABLE YourTable ALTER COLUMN YourColumn columnType NULL
请编辑你的问题,这样问题就清楚了。现在不可读。谢谢@Anna编辑问题。公司id为fk,所以它不是空的。所以请让我知道查询更改公司id为fk,所以它不是空的。所以请让我知道查询更改公司id为fk,所以它不是空的。所以请让我知道查询changes@Minakshi你需要三个,让我知道如何写查询,然后我们不需要有足够的信息完全回答这个问题:什么是模式,如何分配ID?自动递增?序列?它的简单数据库我有更新的信息(AI)。。没有序列。。。
ALTER TABLE YourTable ALTER COLUMN YourColumn columnType NULL