database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 6323 게시물 읽기
No. 6323
트리거 적용받지 않는 쿼리 없나요?
작성자
김종화(zepinos)
작성일
2012-02-13 10:29ⓒ
2012-02-13 10:42ⓜ
조회수
6,762

AAA 라는 테이블이 존재하고, a~c 라는 필드가 존재합니다.

신규입력시 a, b 값이 입력되며, c 는 무조건 null 입니다.

 

그리고 트리거를 통해 AAA 테이블에 insert, after update, after delete 조건에 다른 DBMS 의 BBB, CCC 등의 테이블로 값을 전송하는 것을 만들었습니다. 그리고 insert 후에는 AAA 테이블의 c 라는 필드에 어떠한 값을 생성하여 넣고 있습니다.

AAA 라는 테이블은 하루에 약 1만건 이상의 데이터가 신규로 입력이 됩니다.

현재 300만건 정도인데, 초기에는 트리거 없이 프로시져로 한줄씩 읽어 외부의 BBB, CCC 에 값을 전송하고 AAA.c 필드에 값을 update 하였습니다.

그리고 트리거를 생성했습니다.

 

당연히 AAA.c 가 null 인 레코드가 다수 존재합니다.

문제는 프로시져를 다시 돌리면 마지막에 update 를 하기 때문에 트리거에서 update 에 반응하여 작동이 됩니다. 그럼 2중 전송이 됩니다.

 

이러한 상황에서 프로시져 내에서 update 되는 것은 트리거 적용을 받지 않도록 하는 방법이 없을까요?

트리거를 삭제 혹은 diable 하고 update 한 뒤에 다시 트리거를 생성하거나 enable해야 하나요? 이럴 경우 그 찰나의 시간에 트리거 적용이 안된 채로 insert 되는 값이 없을지 염려됩니다.

 

 

 

조언 부탁드립니다.

이 글에 대한 댓글이 총 1건 있습니다.

 AAA테이블과 AAAc 테이블로 분리해서 AAAc테이블에는 c컬럼과 AAA테이블의 PK를 FK로 잡으시면 되겠지만 역시.. 스키마를 흔드는 정도는 무서우시겠죠.. (아마도 얽혀있어서.. ㅋ)

그렇다면 trigger에서 inserted와 deleted를 비교해서 c 컬럼 외의 값이 바뀌었으면 기존대로
c를 뺀 나머지는 다 같으면 무시하기.. 로 tirgger를 수정하시면 되지 않을까 싶습니다.

우욱님이 2012-02-13 13:36에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
6326부모키 와 자식키 관계
최영진
2012-02-18
7289
6325SQL count, group by에 관한 질문 [1]
초보님
2012-02-15
7033
6324SSMS 원격접속문제 [1]
이기철
2012-02-13
7486
6323트리거 적용받지 않는 쿼리 없나요? [1]
김종화
2012-02-13
6762
6322트랜젝션 로그 백업을받으려고 합니다.
고영민
2012-02-10
7115
6321asp.net c# odbc접그 [1]
박판규
2012-02-09
9949
6319도와주세요 [2]
하하
2012-02-07
6694
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다