0

挿入と更新の 2 つのタイムスタンプを配置するトリガーを作成しました。作成されたタイムスタンプを永久に凍結したいのですが、ユーザーが通常の SQL UPDATE ステートメントを使用して (通常の挿入後に) 直接更新できることがわかりました。tsCreated をユーザーの更新から保護するにはどうすればよいですか?

トリガーはこちら

CREATE OR REPLACE TRIGGER AAAjob_timing
    before insert or update
    on AAAJOB
    for each row
begin
    CASE
        WHEN INSERTING THEN
            :new.tsCreated := sysdate;
            :new.tsUpdated := :new.tsCreated;
        WHEN UPDATING THEN
            :new.tsUpdated := sysdate;
    END CASE; 
    end;
/
4

2 に答える 2

1

どうですか

CREATE OR REPLACE TRIGGER AAAJOB_TRIGGER
  BEFORE INSERT OR UPDATE ON AAAJOB
  FOR EACH ROW
BEGIN
  IF INSERTING THEN
    :NEW.TSCREATED := SYSDATE;
    :NEW.TSUPDATED := SYSDATE;
  ELSIF UPDATING THEN
    :NEW.TSCREATED := :OLD.TSCREATED;
    :NEW.TSUPDATED := SYSDATE;
  ENDIF;
END AAJOB_TRIGGER;

共有してお楽しみください。

于 2013-04-06T00:14:03.033 に答える