我正在开发一个用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”附近使用
我对这个话题还很陌生,所以请原谅任何错误。 (:
答案 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”,则忽略此操作。)