Не удается отключить Oracle внешний ключ через JDBC - PullRequest
0 голосов
/ 09 марта 2020

Следующий SQL -Script отлично работает в моем SQL -Разработчике:

begin
  for c in (select * from user_constraints where constraint_type = 'R' and status = 'ENABLED')
  loop
    dbms_utility.exec_ddl_statement('alter table "' || c.owner || '"."' || c.table_name || '" disable constraint ' || c.constraint_name);
  end loop;
end;

Когда тот же скрипт выполняется с Spring JdbcTemplate, ничего не происходит:

String sql = null;
try {
sql = FileUtils.readFileToString(resourceLoader.getResource("classpath:sql/DisableContraints.sql").getFile(), Charset.defaultCharset());
} catch (IOException e) {
   exceptionHandler.handleException("DisableContraints.sql not loaded.", e);
}
jdbcTemplate.execute(sql);

Такое же странное поведение возникает при попытке выбрать внешние ключи: select * from user_constraints where constraint_type = 'R' and status = 'ENABLED'. SQL - Разработчик возвращает 32 ключа, JDB C возвращает 0. Но когда я выбираю все ключи (select * from user_constraints where status = 'ENABLED') SQL - Разработчик и JDB C возвращает 68 ключей.

У меня нет ключ к ошибке.

1 Ответ

0 голосов
/ 09 марта 2020

Может быть, у вас другой пользователь / схема?

Попробуйте, может быть:

select * from dba_constraints where constraint_type = 'R' and status = 'ENABLED' and owner = 'MYSCHEMA';

Не забудьте проверить владельца, не хотите отключать SYSTEM - проверки .

...