2016-12-01 2 views
0

私は私のプロジェクト内Gradleによって実行される次SQLのスクリプトを追加しました: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

は、スクリプト実行時にpersonテーブルを所有するスキーマとしてログインするDBDeployタスクですか? – Boneist

+0

質問にエラーメッセージを追加してください。私は使用されたDBユーザーがトリガーを追加/変更する権利を持っていないと仮定します。 – Konrad

答えて

1

"強力な"特権を持つデータベースセッション(最も強力なのはSYSDBA)から、そのデータベースユーザー(グラブから接続しているユーザー)に "トリガーを作成"する権限を与える必要があります。

-- 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... 

(彼らは2人のユーザーがいる場合は、ユーザが存在するスキーマを指定する必要があることを思い出してください) 〜に(GRANT resource to...のような)トリガーの作成を再開しますが、上記のものはあなたの目的のために働く最も制限的なものです(不要な追加の権利を付与しないため)。

関連する問題