2016-12-01 64 views
0

我加入以下SQL腳本被Gradle我的計劃之內跑:Gradle:由於沒有正確的權限而無法運行SQL腳本?

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

DBDeploy任務試圖運行該腳本,我得到的腳本不能跑了作爲用戶的錯誤沒有要求的permissions

如何在我的Gradle腳本中修復此問題?

+0

是您的DBDeploy任務以運行腳本時擁有人員表格的模式登錄嗎? – Boneist

+0

請將錯誤消息添加到問題中。我假設使用的數據庫用戶無權添加/修改觸發器。 – Konrad

回答

1

從具有「強大」權限(功能最強大的是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... 

有可以授予其他幾個特權去pe rmit創建一個觸發器(如GRANT resource to...),但上面的那些是限制性最強的那些爲你的目的工作(爲了不授予額外的不必要的權利)。

相關問題