누군가 트리거를 업데이트하는 데 도움을 줄 수 있습니까? 나는 alter 절을 사용하기로되어 있지만 그 이후에 나는 붙어있다. 이 트리거를 변경하고 싶습니다.트리거 업데이트 (방법)
CREATE OR REPLACE TRIGGER "CR_SURGERY_AUDIT"
before insert or delete or update on CR_SURGERY
for each row
declare
V_user varchar2 (30);
V_date varchar2 (30);
begin
select user, to_char(sysdate, 'dd/mon/yyyy hh24:mi:SS') INTO v_user, v_date
from dual;
IF inserting THEN
insert into CR_SURGERY_AUDIT (new_name, old_name, user_name, entry_date, operation)
VALUES (:NEW.CR_SURGERY, NULL, v_user, v_date, 'insert');
ELSIF DELETING THEN
insert into CR_SURGERY_AUDIT (new_name, old_name, user_name, entry_date, operation)
VALUES (null, :OLD.CR_SURGERY, v_user, v_date, 'delete');
ELSIF UPDATING THEN
insert into CR_SURGERY_AUDIT (new_name, old_name, user_name, entry_date, operation)
VALUES (:NEW.CR_SURGERY, :OLD.CR_SURGERY, v_user, v_date, 'Update');
END IF;
END;
저는 간단하지만 구성 방법을 찾을 수는 없습니다. 트리거를 수정 할 구문이 없습니다
select user, to_char(sysdate, 'dd/mon/yyyy') INTO v_user, v_date from dual;
IF inserting THEN
insert into CR_SURGERY_AUDIT (new_name, old_name, user_name, entry_date,
operation, FK_SOCRD_ID)
VALUES (:NEW.CR_SURGERY, NULL, v_user, v_date, 'insert');
'create or replace trigger'는 이미 기존 트리거를 새 코드로 대체합니다. 아니면 그냥 놓고 다시 만들 수 있습니다. –
아인. 괜찮아. 나는 그것을 놓고 재창조해야 할 가능성이 가장 높다는 것을 알았지 만 단지 그것을 업데이트하기위한 또 다른 노력이 있었으면 좋겠다. –
그런데 PL/SQL은 편리한 ': ='할당 연산자를 가지고 있기 때문에'select ... into ... from dual '을 필요로하지 않습니다. 또한'user'는 항상 트리거 소유자의 이름이 될 것입니다 . 아마도'sys_context ('userenv', 'os_user')'는 감사에 더 유용 할 것입니다. –