Oracle 如何保护时间戳列不受用户更新的影响
我创建了一个触发器来放置两个时间戳,插入并更新。我希望创建的时间戳永远冻结,但我发现用户可以直接(在正常插入之后)使用常规的SQL update语句更新它。如何保护创建的TSC不受用户更新的影响 这是扳机Oracle 如何保护时间戳列不受用户更新的影响,oracle,timestamp,Oracle,Timestamp,我创建了一个触发器来放置两个时间戳,插入并更新。我希望创建的时间戳永远冻结,但我发现用户可以直接(在正常插入之后)使用常规的SQL update语句更新它。如何保护创建的TSC不受用户更新的影响 这是扳机 CREATE OR REPLACE TRIGGER AAAjob_timing before insert or update on AAAJOB for each row begin CASE WHEN INSERTING THEN
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;
/
当用户尝试更新此列中的值时,在触发器中引发异常。当用户尝试更新此列中的值时,在触发器中引发异常。如何
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;
分享和享受。怎么样
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;
共享和享受。将此设置为一个约束(更新后)并将其作为普通用户无法成为的用户(例如系统管理员)安装,至少不要使用ease。将此设置为一个约束(更新后)并将其作为普通用户无法成为的用户(例如系统管理员)安装,至少不要使用ease