java - 无法通过 JDBC 禁用 Oracle 外键
问题描述
以下 SQL 脚本在我的 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-Developer 返回 32 个键,JDBC 返回 0。但是当我选择所有键 ( select * from user_constraints where status = 'ENABLED'
) SQL-Developer 和 JDBC 返回 68 个键。
我不知道错误在哪里。
解决方案
也许您有不同的用户/模式?
试试也许:
select * from dba_constraints where constraint_type = 'R' and status = 'ENABLED' and owner = 'MYSCHEMA';
不要忘记所有者检查,您不想禁用SYSTEM
- 检查。
推荐阅读
- splunk - Splunk 查询使用 eval 函数后返回 0
- javascript - Paho Javascript Mqtt 客户端(通过 Websockets)未连接到 Mosquitto Broker(托管在 Google Cloud VM 上)
- tensorflow - AttributeError:模块“tensorflow.python.pywrap_tensorflow”没有属性“TFE_MonitoringNewCounter0”
- java - “ [main] INFO expect4j.Expect4j - 处理 EOF null” 这个问题到底是什么?
- android - 在 Android 供应商软件中使用 AHardwareBuffer_fromHardwareBuffer()?
- php - 我想在 PHP 中使用 htaccess 从 url 中隐藏 id
- c++ - 为什么我的梯度下降算法不收敛?(对于逻辑回归)
- flutter - 如何使用 darkTheme 在颤动中更改主题:
- r - 如何使用 ggplot2 从条形图中的多列中绘制 3 个单个数字?
- java - 如何在maven中做多个生成源代码的主类