[MSSQL] TRIGGER

2009. 3. 27. 13:10·Database
반응형


이번 *****증권 업체를 맡아서 TRIGGER를 한번 해봤다.

- 고객테이블에 데이터 변경이 일어나면 무조건,
-- 바뀌기전 데이터와 바뀐후 데이터를, 기록테이블에 저장하는 트리거
CREATE TRIGGER SMSAUTO_LIST_03_INSERT_TRIGGER
ON SMSAUTO_LIST_03
AFTER INSERT
AS
-- SMSAUTO_LIST_03 테이블에 INSERT가 일어나면
-- 이를 NVECARESENDLOG 테이블에 같은 값을 삽입한다.
INSERT INTO NVECARESENDLOG(RESULT_SEQ, CUSTOMER_KEY, CUSTOMER_NM, CUSTOMER_EMAIL, ERROR_CD)
 SELECT RESULT_SEQ, MEMBER_ID AS CUSTOMER_KEY, TO_NAME AS CUSTOMER_NM, TO_PHONE AS CUSTOMER_EMAIL , ERROR_CODE AS ERROR_CD FROM inserted
GO

 

-- SMSAUTO_LIST_03 하는 테이블에 대해서
-- ERROR_CD에 Update가 발생한 경우에 실행되는 트리거
CREATE TRIGGER SMSAUTO_LIST_03_UPDATE_TRIGGER
ON SMSAUTO_LIST_03
AFTER UPDATE
AS
   DECLARE @ECARE_NO VARCHAR(15)
   DECLARE @RESULT_SEQ VARCHAR(16)
   DECLARE @CUSTOMER_KEY VARCHAR(50)
   DECLARE @SEND_DT VARCHAR(8)
   DECLARE @SEND_TM VARCHAR(6)
   DECLARE @ERROR_CD VARCHAR(4)
IF(UPDATE(ERROR_CODE))
BEGIN
  SELECT 
   @RESULT_SEQ = RESULT_SEQ,
   @CUSTOMER_KEY = MEMBER_ID,
   @SEND_DT = CONVERT(CHAR(8),SEND_TIME,112),
   @SEND_TM = REPLACE(CONVERT(VARCHAR(20),SEND_TIME,108),':',''),
   @ERROR_CD = ERROR_CODE
  FROM INSERTED
END
  UPDATE  NVECARESENDLOG
  SET     SEND_DT = @SEND_DT,
             SEND_TM = @SEND_TM,
             ERROR_CD = @ERROR_CD,
             TRIGGER_FLAG='Y',
             TRIGGER_DATE = GETDATE()
  WHERE  RESULT_SEQ = @RESULT_SEQ
  AND     CUSTOMER_KEY = @CUSTOMER_KEY

====================================================

-- SMSAUTO_LIST_03 하는 테이블에 대해서
-- SMSAUTO_LIST_03 테이블에 Update가 발생한 경우에 실행되는 트리거
CREATE TRIGGER SMSAUTO_LIST_03_UPDATE_TRIGGER
ON SMSAUTO_LIST_03
AFTER UPDATE
AS
   DECLARE @ECARE_NO VARCHAR(15)
   DECLARE @RESULT_SEQ VARCHAR(16)
   DECLARE @CUSTOMER_KEY VARCHAR(50)
   DECLARE @SEND_DT VARCHAR(8)
   DECLARE @SEND_TM VARCHAR(6)
   DECLARE @ERROR_CD VARCHAR(4)
IF(COLUMNS_UPDATED() > 0)
BEGIN
  SELECT
   @CUSTOMER_KEY = MEMBER_ID,
   @SEND_DT = CONVERT(CHAR(8),DELIVER_TIME,112),
   @SEND_TM = REPLACE(CONVERT(VARCHAR(20),DELIVER_TIME,108),':',''),
   @ERROR_CD = ERROR_CODE
  FROM INSERTED
END
  UPDATE  NVECARESENDLOG
  SET     SEND_DT = @SEND_DT,
          SEND_TM = @SEND_TM,
   ERROR_CD = @ERROR_CD,
   TRIGGER_FLAG='Y',
   TRIGGER_DATE = GETDATE()
  WHERE  CUSTOMER_KEY = @CUSTOMER_KEY

반응형

'Database' 카테고리의 다른 글

[ORACLE] TO_CHAR 요일값 구하기  (0) 2009.05.06
[DB] 쿼리상에서 없는 도메인메일 뺴기  (0) 2009.04.06
[ORACLE] 토드에서 SQL문 자동 포멧팅  (0) 2009.03.23
[MSSQL] 주민번호 or 사업자등록번호가 올때 LENGTH로 길이를 구분하여 짜르기  (0) 2009.03.06
[MSSQL] DATEADD사용하기  (0) 2009.03.06
'Database' 카테고리의 다른 글
  • [ORACLE] TO_CHAR 요일값 구하기
  • [DB] 쿼리상에서 없는 도메인메일 뺴기
  • [ORACLE] 토드에서 SQL문 자동 포멧팅
  • [MSSQL] 주민번호 or 사업자등록번호가 올때 LENGTH로 길이를 구분하여 짜르기
애플자라
애플자라
    반응형
  • 애플자라
    애플자라
    애플자라
  • 전체
    오늘
    어제
    • 분류 전체보기 (659)
      • ChatGPT (2)
      • Linux (93)
      • Programing (92)
      • Flex, Laszlo (15)
      • Database (168)
      • Network (15)
      • Data (14)
      • Tips (120)
      • 여행★ (1)
      • Board (116)
      • 맛집탐방 (3)
      • 아이원츄 (12)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • Love&Smile
    • Husk's repository
    • StartUp
    • DSDSTUDIO Experimentals
    • 신선
    • DEV.SEULKI.KR[이슬기]
    • Live Bit Block
  • 공지사항

  • 인기 글

  • 태그

    Toad
    테이블
    sql
    apache
    파일
    mssql
    Shell
    Linux
    delete
    eclipse
    Oracle
    select
    DB
    윈도우
    java
    MySQL
    백업
    데이터
    server
    서버
    Windows
    DATABASE
    tomcat
    리눅스
    오라클
    table
    자동차
    설정
    IP
    Excel
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
애플자라
[MSSQL] TRIGGER
상단으로

티스토리툴바