##现在有以下两个触发器,这两个触发器是否可以合并成为一个触发器,应当如何合并?
CREATE OR REPLACE TRIGGER CJSTATUS_R5EVENTKGBG
AFTER INSERT OR UPDATE
ON R5EVENTKGBG
FOR EACH ROW
BEGIN
IF (:NEW.EVT_CJDATE IS NOT NULL) THEN
UPDATE R5EVENTS EVT
SET EVT_STATUS='DX13'
WHERE EVT_CODE = :OLD.EVT_CODE
AND EVT.EVT_STATUS='DX04';
END IF;
END CJSTATUS_R5EVENTKGBG;
CREATE OR REPLACE TRIGGER ZJSTATUS_R5EVENTKGBG
AFTER INSERT OR UPDATE
ON R5EVENTKGBG
FOR EACH ROW
BEGIN
IF (:NEW.EVT_ZJDATE IS NOT NULL) THEN
UPDATE R5EVENTS EVT
SET EVT_STATUS='DX14'
WHERE EVT_CODE = :OLD.EVT_CODE
AND EVT.EVT_STATUS='DX08';
END IF;
END ZJSTATUS_R5EVENTKGBG;
根据提供的两个触发器,可以将它们合并成为一个触发器。合并后的触发器可以在触发器的主体中包含两个IF语句,分别检查CJDATE和ZJDATE是否为空,如果CJDATE不为空,则更新事件状态为'DX13',如果ZJDATE不为空,则更新事件状态为'DX14'。以下是合并后的触发器代码:
CREATE OR REPLACE TRIGGER STATUS_R5EVENTKGBG
AFTER INSERT OR UPDATE
ON R5EVENTKGBG
FOR EACH ROW
BEGIN
IF (:NEW.EVT_CJDATE IS NOT NULL) THEN
UPDATE R5EVENTS EVT
SET EVT_STATUS='DX13'
WHERE EVT_CODE = :OLD.EVT_CODE
AND EVT.EVT_STATUS='DX04';
END IF;
IF (:NEW.EVT_ZJDATE IS NOT NULL) THEN
UPDATE R5EVENTS EVT
SET EVT_STATUS='DX14'
WHERE EVT_CODE = :OLD.EVT_CODE
AND EVT.EVT_STATUS='DX08';
END IF;
END STATUS_R5EVENTKGBG;
希望这个答复能够帮到您!