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

时间:2016-12-01 11:18:53

标签: 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任务尝试运行此脚本时,由于用户没有所需的permissions,我收到无法运行脚本的错误?

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

1 个答案:

答案 0 :(得分:1)

来自具有强大"的数据库会话。权限(最强大的是SYSDBA),你应该授予权限#34;创建一个触发器"到该数据库用户(您从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...

可以授予许多其他权限以允许创建触发器(例如GRANT resource to...),但上述权限是最具限制性的权限(适用于您的目的)(为了不授予其他不必要的权限) )。