2011-05-10 6 views
0

자주 삽입/업데이트 할 때 행의 모든 ​​내용을 다른 테이블에 복사하는 트리거를 만들어야합니다. 어떤 테이블은 200 컬럼을 가지고 있기 때문에 이것은 종종 긴 글씨체입니다.트리거에 대한 SQL 스크립트 생성

CREATE TRIGGER scheme.trigger AFTER UPDATE ON scheme.table 
    REFERENCING OLD as o_row NEW as n_row 
    FOR EACH ROW 
BEGIN 
    INSERT INTO archive (...) VALUES(...); 
END; 

이것은 많은 타이핑입니다. 이러한 유형의 트리거, 삽입, 업데이트를 구축하는 쉬운 생성기가 있습니까?

+4

수년 동안 DB2를 수행하지는 않았지만 열 이름을 얻기 위해 참조 할 수있는 데이터 사전 테이블이 없습니까? 그 출력에 열 목록을 삽입하는 동안 위의 출력을 위해 저장된 proc를 작성 하시겠습니까? 필자는 오라클과 SQL Server에서이 작업을 수행 했으므로 DB2에서이 작업을 수행하는 방법이라고 가정합니다. – MJB

+0

나는 보조 툴을 계획하고 있지만 현재 약간의 시간이 부족하며 프리웨어 도구가 없는지 궁금합니다. – ZoolWay

+1

"select * from systables"로 시작하고 거기서 시작하십시오. 정확한 공구를 찾는 것보다 자신의 롤을 만드는 것이 훨씬 쉽다는 생각이 듭니다. 이것은 그다지 어려운 문제가 아닙니다. – MJB

답변

1

프로세스에 입력 매개 변수 집합이 있고이 매개 변수가있는 프로세스가 동일한 경우 트리거에서 매개 변수를 전달하여 저장 프로 시저를 호출 할 수 있습니다. 이렇게하면 이러한 DML 문장을 모두 다시 복사하거나 다시 만들 필요가 없습니다.

+0

이것은 꽤 들리지만 매개 변수의 수는 테이블마다 다릅니다. 다양한 매개 변수 길이가 iSeries DB2 저장 프로 시저에서 지원됩니까? – ZoolWay

+0

도구가 없으므로 허용됩니다. 수동으로 처리하는 가장 유연한 방법입니다. – ZoolWay

1

나는 당신을 위해 CREATE TRIGGER 문 생성하는 도구의 모르겠지만, 내가 쿼리에서 DDL 것을 여러 번 발생했습니다, 그리고 내가 참조에 필요한 유일한보기 SYSCAT.COLUMNS

했다

다음 요소는 작성중인 트리거 DDL 생성자 쿼리를 단순화합니다. - 원래 테이블과 아카이브 테이블 간의 열 이름이 동일합니다. - 대상 테이블의 열이 GENERATED ALWAYS로 정의되어 있지 않으면 INSERT 문에서 열을 생략해야합니다.

관련 문제