Как использовать оператор IF NOT EXISTS для оператора ALTER TABLE? - PullRequest
0 голосов
/ 15 октября 2019

Я работаю над приложением, написанным на Java. Теперь я должен создать новый столбец в моей базе данных. Но столбец должен быть просто создан, когда он не существует.

Поэтому я хочу использовать ЕСЛИ НЕ СУЩЕСТВУЕТ и 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, чтобы найти правильный синтаксис, который можно использовать рядом со словом «если не существует test_id» в строке 1

Я совершенно новичок в этой теме, поэтому прошу прощения за любые ошибки. (

1 Ответ

1 голос
/ 15 октября 2019

Вы можете использовать:

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;

Также,вам нужно будет предоставить доступ (для information_schema) пользователю, указанному в вашем Java-приложении. (Игнорируйте это, если пользователь 'ROOT').

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...