java - Gradle:由于没有正确的权限而无法运行 SQL 脚本?

标签 java oracle gradle oracle11g triggers

我添加了以下 SQL 脚本,由我的项目中的 Gradle 运行:

   CREATE OR REPLACE TRIGGER my_trigger
        BEFORE update of ID ON person
        FOR each row
     BEGIN
        :new.updated := systimestamp;
     END;;

DBDeploy任务尝试运行此脚本,但收到错误消息:由于用户没有所需的权限,因此无法运行该脚本?

如何在我的 Gradle 脚本中修复此问题?

最佳答案

在具有“强大”权限的数据库 session 中(最强大的是SYSDBA),您应该向该数据库用户(您正在连接的用户)授予“创建触发器”的权限来自 gradle)如下所示:

-- if the user used in gradle is the same user that owns the schema, like it seems
grant CREATE TRIGGER to <the user>;

-- if the user used in gradle is a different user, you must grant him a more powerful right:
grant CREATE ANY TRIGGER;

然后从 gradle 发出命令(请记住,如果他们是两个不同的用户,则必须指定用户所在的架构)

CREATE OR REPLACE TRIGGER the_schema.my_trigger...

还可以授予其他几种权限来允许创建触发器(例如将资源授予...),但上面的权限是最适合您的目的的限制性权限(为了不授予额外不必要的权利)。

关于java - Gradle:由于没有正确的权限而无法运行 SQL 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40909312/

相关文章:

java - 字符串正则表达式分割打印输出包含的行数比预期少?

java - 重新定位 Line2D Java

java - gradle依赖关系和缓存

android - Gradle和github存储库,同步缓慢

java - 何时使用 Java 日志记录关闭和删除 FileHandler

java - 自定义 ListAdapter 的 Hashmap 中出现空指针异常?

java - JDBC 与 Oracle -executeUpdate 自动更改 AutoCommit 的状态

sql - 使用花括号和通配符转义 Oracle 文本

oracle - DBMS_JOB和DBMS_SCHEDULER

gradle - 为什么我收到 "could not find com.android.tools.build:gradle"错误?