FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird Q&A
[1948] TRIGGER에서 다른 테이블에 INSERT 시에..
BloodWolf [cyberpd] 2081 읽음    2006-04-24 13:48
Table A에 INSERT를 하면, Table B에도 INSERT 되게 하기 위해서 트리거를 사용하였습니다.
그런데, Table A에 넣었던 자료를 DELETE하고, 같은 PK 값을 가지는 데이터를 입력하면 Table B에서 PK 에러가 납니다. 이러한 에러나 나지 않도록 하기 위해서 Trigger에서 Table B로 INSERT 할때 기존 값이 있으면 Table B로의 INSERT 잡업을 하지 않도록 하려고 합니다.

현재는 임시로 trigger 안에서 UPDATE와 ROW_COUNT로 기존 자료가 있는지 확인하고 있습니다.
그러나, 다른 트리거에서 Table B에 Update 이벤트가 발생할 경우 Table C로 변경 내용을 로깅하도록 하고 있어서
Table A에 데이터를 넣을 때마다 Table C에 로그 정보가 입력됩니다.

SET TERM !!;
CREATE TRIGGER A_INSERT_T FOR A
  ACTIVE AFTER INSERT POSITION 0 AS
  DECLARE VARIABLE ID VARCHAR(11);
  BEGIN
    ID=NEW.ID;
    UPDATE B SET STATUS=0 WHERE ID=:ID;
    IF (ROW_COUNT = 0) THEN
        INSERT INTO B(ID) VALUES(:ID);
  END !!
SET TERM ;!!

Firebird에서 table에 insert할 때 기존 자료가 있는지 확인할 수 있는 한 문장의 쿼리를 만들 수 있을 까요??

+ -

관련 글 리스트
1948 TRIGGER에서 다른 테이블에 INSERT 시에.. BloodWolf 2081 2006/04/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.