ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

データベーストリガー

  • このフォーラムに新しいトピックを立てることはできません
  • このフォーラムではゲスト投稿が禁止されています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2012-6-27 17:01
tomato  半人前   投稿数: 27
テーブルの更新日や時刻や更新回数などのカラムをデータベーストリガーでセットするようにしています。APGなどで登録、修正すると問題なく自動更新されているようですが、削除すると『処理に失敗しました.他のユーザか…』が出て削除できません。修正は何度でもできます。トリガを一旦無効にしてみましたが、トリガで更新したレコードはやはり削除できませんでした。トリガの構文は下記の内容ですが、何か問題あるのでしょうか?同じような事してる方いらしたら教えてください。宜しくお願いします。

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
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2012-6-27 18:14
FNK  半人前 居住地: 神奈川県横浜市  投稿数: 23
tomatoさん、始めまして。(初投稿だったりします。)

さて、ご質問の件、分かる範囲で回答いたします。

uniPaaSのプログラムで、更新レコードの識別を「位置と更新項目」で行っているのではないですか?
又、Oracleの insert、update トリガーは、before ではなく、after だと思うのですが如何ですか?
deleteトリガーは before しか無いのでこのような現象が起こっていると判断できます。

削除するのに、監査項目(更新時刻)を update する必要があるかを検討し、不要であるならば回避したら如何でしょうか。
履歴がほしいのであれば、別の手段を検討すべきと思います。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2012-6-27 18:46
tomato  半人前   投稿数: 27
FNKさんこんにちは。

あれからPCを再起動したら、正常に動作しました。トリガーを色々試していたのでおかしくなったと思います。

afterだとORA-04084が出て:NEW.更新時刻を更新できなかったのでbeforeにしています。(やり方がわかりませんでした。。)

削除の時はupdateしません。今回のプロジェクトでは物理削除は無いですが、気になったので質問させていただきました。
投票数:0 平均点:0.00

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約