2016-10-06 1 views
0

테이블 purch_ord_hdr의 열 src_system_id이 "S"에서 "D"로 변경 될 때마다 보고서를 트리거해야하는 시나리오가 있습니다. "."S"에서 "D"까지 열 값 변경을 기반으로 트리거를 만드는 방법

값이 변경 될 때마다 동작은 insert 또는/및 update에 따라 트리거되어야합니다. 아무리해도 insert 또는 update 성명입니다.

+2

우선 삽입물 인 경우 아무 것도 변경되지 않습니다. 'D'를 사용하여 새 행을 만들면 트리거가 작동하도록 하시겠습니까? –

+1

좋습니다. 보유하고있는 프로젝트의 비즈니스 규칙을 공유했거나 질문이 있습니까? 우리는 기꺼이 도와 드리 겠지만 여기 주변의 많은 사람들이 당신을 위해 당신의 일을 기꺼이하지 않을 것입니다. 여기서 시작하는 것이 좋습니다. http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –

+0

MS SQL Server 또는 Informix를 사용하고 있습니까? – jarlh

답변

0

실행중인 IDS의 버전을 알려 주어야합니다 (테이블 이름과 기본 키 열 이름을 포함하도록 수정).

그럼에도 불구하고이 테스트 케이스를 확인하고 적용하십시오.

CREATE TABLE tab1(
    col1   CHAR(1) 
); 

CREATE TABLE tab1_hist(
     col1_old  CHAR(1), 
     col1_new  CHAR(1), 
     user   VARCHAR(32), 
     event   CHAR(1), 
     date   DATETIME YEAR TO SECOND 
); 


CREATE PROCEDURE sp_ti_tab1(val CHAR(1)) 
     INSERT INTO tab1_hist (col1_new, user, event, date) 
       VALUES (val, USER, 'I', CURRENT); 
END PROCEDURE; 

CREATE PROCEDURE sp_tu_tab1(val_o CHAR(1), val_n CHAR(1)) 
     INSERT INTO tab1_hist (col1_old, col1_new, user, event, date) 
       VALUES (val_o, val_n, USER, 'U', CURRENT); 
END PROCEDURE; 

CREATE TRIGGER ti_tab1 
     INSERT OF col1 ON tab1 
     REFERENCING NEW AS new 
     FOR EACH ROW WHEN(new.col1 = 'D') 
       (EXECUTE PROCEDURE sp_ti_tab1(new.col1)); 

CREATE TRIGGER tu_tab1 
     UPDATE OF col1 ON tab1 
     REFERENCING NEW AS new OLD AS old 
     FOR EACH ROW WHEN(new.col1 = 'D' AND old.col1 = 'A') 
       (EXECUTE PROCEDURE sp_tu_tab1(old.col1, new.col1)); 
+0

버전, 그러나 나는 IBM Informix Dynamic Server 버전 12.10.FC4W1WE AIX 서버 –

+0

에서 작동 중입니다. –

0

SQL Server의 경우,이 시도

create trigger on [Table name here] 
for insert, update 
as 
Set NoCount On 
    if Exists 
     (Select * From inserted I 
      left join deleted d 
       on d.PKCol = i.PKCol -- < replace PKCol w/name of Prim Key 
     Where i.src_system_id = 'D' 
      and isnull(d.src_system_id, 'S') = 'S') 
    Begin 
     -- Here put code to do whatever you want trigger to do 
    End 
+0

Informix와 다른 점은 어느 정도입니까 –

+0

어떤 사용자가 S에서 D로 값을 변경하는지 감지 할 수 있습니까 –

+0

잘 모르겠 음 Informix –

관련 문제