データベーストリガー
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
tomato
投稿数: 27
![半人前 半人前](../../uploads/rank3dbf8e94a6f72.gif)
テーブルの更新日や時刻や更新回数などのカラムをデータベーストリガーでセットするようにしています。APGなどで登録、修正すると問題なく自動更新されているようですが、削除すると『処理に失敗しました.他のユーザか…』が出て削除できません。修正は何度でもできます。トリガを一旦無効にしてみましたが、トリガで更新したレコードはやはり削除できませんでした。トリガの構文は下記の内容ですが、何か問題あるのでしょうか?同じような事してる方いらしたら教えてください。宜しくお願いします。
CREATE OR REPLACE
TRIGGER TRG_MST社員
BEFORE INSERT OR UPDATE ON MST社員
FOR EACH ROW
BEGIN
:NEW.更新時刻 := TO_CHAR(SYSDATE,'HH24MISS');
END;
Oracle11gです
CREATE OR REPLACE
TRIGGER TRG_MST社員
BEFORE INSERT OR UPDATE ON MST社員
FOR EACH ROW
BEGIN
:NEW.更新時刻 := TO_CHAR(SYSDATE,'HH24MISS');
END;
Oracle11gです
投票数:0
平均点:0.00
FNK
居住地: 神奈川県横浜市
投稿数: 23
![半人前 半人前](../../uploads/rank3dbf8e94a6f72.gif)
tomatoさん、始めまして。(初投稿だったりします。)
さて、ご質問の件、分かる範囲で回答いたします。
uniPaaSのプログラムで、更新レコードの識別を「位置と更新項目」で行っているのではないですか?
又、Oracleの insert、update トリガーは、before ではなく、after だと思うのですが如何ですか?
deleteトリガーは before しか無いのでこのような現象が起こっていると判断できます。
削除するのに、監査項目(更新時刻)を update する必要があるかを検討し、不要であるならば回避したら如何でしょうか。
履歴がほしいのであれば、別の手段を検討すべきと思います。
さて、ご質問の件、分かる範囲で回答いたします。
uniPaaSのプログラムで、更新レコードの識別を「位置と更新項目」で行っているのではないですか?
又、Oracleの insert、update トリガーは、before ではなく、after だと思うのですが如何ですか?
deleteトリガーは before しか無いのでこのような現象が起こっていると判断できます。
削除するのに、監査項目(更新時刻)を update する必要があるかを検討し、不要であるならば回避したら如何でしょうか。
履歴がほしいのであれば、別の手段を検討すべきと思います。
投票数:0
平均点:0.00
tomato
投稿数: 27
![半人前 半人前](../../uploads/rank3dbf8e94a6f72.gif)
FNKさんこんにちは。
あれからPCを再起動したら、正常に動作しました。トリガーを色々試していたのでおかしくなったと思います。
afterだとORA-04084が出て:NEW.更新時刻を更新できなかったのでbeforeにしています。(やり方がわかりませんでした。。)
削除の時はupdateしません。今回のプロジェクトでは物理削除は無いですが、気になったので質問させていただきました。
あれからPCを再起動したら、正常に動作しました。トリガーを色々試していたのでおかしくなったと思います。
afterだとORA-04084が出て:NEW.更新時刻を更新できなかったのでbeforeにしています。(やり方がわかりませんでした。。)
削除の時はupdateしません。今回のプロジェクトでは物理削除は無いですが、気になったので質問させていただきました。
投票数:0
平均点:0.00