CREATE OR REPLACE TRIGGER F4211_IN
AFTER
INSERT OR UPDATE OR DELETE ON F4211
FOR EACH ROW
---------------------------------------------------------------------------------------------------------------------------------------------------------------
DECLARE
V_COUNT NUMBER := 0;
BEGIN
---------------------------------------------------------------------------------------------------------------------------------------------------------------
IF :NEW.SDLTTR = 541 THEN -- SDLTTR 값이 541인 경우에만 동작
---------------------------------------------------------------------------------------------------------------------------------------------------------------
IF INSERTING THEN
SELECT Count(*) INTO V_COUNT
FROM F500002
WHERE 1=1
AND B1KCOO =:NEW.SDKCOO
AND B1DOCO =:NEW.SDDOCO
AND B1DCTO =:NEW.SDDCTO
AND B1LNID =:NEW.SDLNID;
IF V_COUNT = 0 THEN
INSERT INTO F500002 (
B1KCOO,
B1DOCO,
B1DCTO,
B1LNID,
B1AN8
)
VALUES (
:NEW.SDKCOO,
:NEW.SDDOCO,
:NEW.SDDCTO,
:NEW.SDLNID,
:NEW.SDAN8
);
END IF;
---------------------------------------------------------------------------------------------------------------------------------------------------------------
ELSIF UPDATING THEN
SELECT Count(*) INTO V_COUNT
FROM F500002
WHERE 1=1
AND B1KCOO = :OLD.SDKCOO -- 기존에 있던 오더
AND B1DOCO = :OLD.SDDOCO
AND B1DCTO = :OLD.SDDCTO
AND B1LNID = :OLD.SDLNID;
IF V_COUNT <> 0 THEN
UPDATE F500002
SET
B1KCOO = :NEW.SDKCOO,
B1DOCO = :NEW.SDDOCO,
B1DCTO = :NEW.SDDCTO,
B1LNID = :NEW.SDLNID,
B1AN8 = :NEW.SDAN8,
WHERE 1=1
AND B1KCOO = :OLD.SDKCOO
AND B1DOCO = :OLD.SDDOCO
AND B1DCTO = :OLD.SDDCTO
AND B1LNID = :OLD.SDLNID;
END IF;
END IF;
END IF;
END;
제목이 곧 질문인가요?
본문 안에 있는 IF 문이 질문의 답이 아닌지요?
제목 외에는 상세 질문이 전혀 없어서 질문의 의도를 모르겠네요?
인식을 못합니다. 라고 하시면? 어쩌라구? 라고 답변할수밖에 없습니다.
뭐가 어떻게 안되는지 구체적으로 질문하셔야 합니다.
어떤 상황에서 어떤걸 시도했는데 어떤 메시지가 나온다 식으로 구체적으로 질문해 주세요.
컴파일이 안되는 것인지?
컴파일은 되는데 동작중에 오류가 나는 것인지?
오류는 안나지만 원하는 결과가 안나오는 것인지?
등등등...
아 넵 오류는 안나지만 아예 insert, update가 진행되지 않습니다. 상태코드 LTTR이 541인 상태에서부터 INSERT 및 UPDATE를 시키고 싶은데 상태가 541이 되어도 아무 행위도 진행되지 않습니다
CREATE OR REPLACE TRIGGER F4211_IN
AFTER
INSERT OR UPDATE OR DELETE ON F4211
FOR EACH ROW
---------------------------------------------------------------------------------------------------------------------------------------------------------------
DECLARE
V_COUNT NUMBER := 0;
BEGIN
----------------------------------------------------------------------------------------------------------------------------------
IF :NEW.SDLTTR >='541' THEN -- SDLTTR 값이 541인 경우에만 동작
----------------------------------------------------------------------------------------------------------------------------------
IF INSERTING THEN
SELECT Count(*) INTO V_COUNT
FROM F500002
WHERE 1=1
AND B1KCOO =:NEW.SDKCOO
저렇게 했는데 인식을 못합니다 ㅠㅠ
테스트 수행 절차 전반에 대해 꼼꼼하게 설명해 주셔야 합니다.
insert 가 진행되지 않는다? 라는 말이
F4211 에 대한 말인지? F500002 에 대한 말인지 도 잘 모르겠구요.
테스트 수행 절차는 전혀 없이 소스만 주어진 상황에서만 판단해 보면
일단 소스에 구문 오류가 있습니다. 컴마가 안맞네요. 컴파일이 잘 되었는지 의문.
소스에 문제가 없다면 로직에 대한 문제는 딱 눈에 띄는 것은 없네요.
테스트 절차상 문제가 없었는지?
주어 목적어 빼고 질문하시면? 도움 드릴 수가 없습니다.
안되면 스스로 디버깅 해보셔야 합니다.