0

我创建了一个触发器来放置两个时间戳,插入和更新。我希望创建的时间戳永远被冻结,但我发现用户可以使用常规的 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

2

当用户尝试更新此列中的值时,在触发器中引发异常。

于 2013-04-05T15:40:32.897 回答
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 回答