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

时间:2019-10-15 08:08:35

标签: java mysql sql jdbc

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

所以我想使用 IF NOT EXISTS ALTER 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.")
 }

实际上,我只是希望它能打印出“列已生成”。但这给了我以下错误信息:

  

错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第1行“如果不存在test_id”附近使用

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

1 个答案:

答案 0 :(得分: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应用程序中指定的用户的访问权限(for information_schema)。 (如果用户为“ ROOT”,则忽略此操作。)