java - 如何将 IF NOT EXISTS 语句用于 ALTER TABLE 语句?

标签 java mysql sql jdbc

我正在开发一个用 Java 编写的应用程序。现在我必须在数据库中创建一个新列。但该列不存在时才创建。

所以我想使用IF NOT EXISTSALTER TABLE来创建我的新列。

这是我尝试过的:

//Some import statements and previous, not for the question relevant code
 
//relevant code:

 Statement alter = conn.createStatement();{
   String alterStr="alter table test_cm_documents ADD if not exists test_id int";
   alter.executeQuery(alterStr);
   System.out.println("Column has been generated.")
 }

实际上我只是期望它打印出“列已生成”。但它给了我以下错误消息:

ERROR 1064(42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'if not exists test_id' at line 1

我对这个主题还很陌生,所以请原谅任何错误。

最佳答案

您可以使用:

select * from information_schema.columns
where
table_schame='<enter_your_database_name_here_remove_brackets>' and
table_name='test_cm_documents' and
column_name='test_id'

在 Java 应用程序中接收元组列表,如果该列表的大小为 0,则执行 mysql 查询:

alter table test_cm_documents add column test_id int;

此外,您还需要向 Java 应用程序中指定的用户授予访问权限(对于 information_schema)。 (如果用户是“ROOT”,请忽略此)。

关于java - 如何将 IF NOT EXISTS 语句用于 ALTER TABLE 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58390022/

相关文章:

mysql - 如何更新表数组

mysql - 类似列的 JSON 数据类型

sql - SQL如何在相似数据库之间快速导入数据?

java - Gson 是否可以在映射到给定类时修改解析的数据

Java 非常不寻常的类路径问题

php - SQL查询在phpmyadmin中工作但在php中不起作用

php - 计算 SQL 查询中的两列数

java - 使用 Jdbctemplate 和 Rowmapping 获取 Bean 而不是 List 对象

java - 启用自定义规则后,SonarQube Scanner 在 Jenkins 上失败

sql - 一列多列上的 array_agg