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 7222 게시물 읽기
No. 7222
mssql trigger에 관해서
작성자
이게뭐지
작성일
2020-06-24 09:13
조회수
2,271

 

CREATE TRIGGER [dbo].[EMPLOYEE_TRIG_I]

   ON [dbo].[employee]

  for INSERT ---- for를 after로 바꿀시 2건 들어감.

AS 

BEGIN

SET NOCOUNT ON;

 

DECLARE @EXISTS_VAL INT;

DECLARE @MAXSEQ INT;

--NEW값

DECLARE @N_EMP_NO VARCHAR(7);

 

DECLARE TRIGGER_CUR CURSOR FOR 

SELECT EMP_NO

  FROM INSERTED

;

OPEN TRIGGER_CUR

WHILE(1=1)

BEGIN

FETCH NEXT FROM TRIGGER_CUR INTO @N_EMP_NO 

IF(@@FETCH_STATUS <> 0)

BREAK

;

SELECT @EXISTS_VAL = COUNT(*) FROM MARTDB..EMPLOYEE_HISTORY

WHERE EMP_NO = @N_EMP_NO

   AND FROM_DATE= CONVERT(CHAR(8), GETDATE(), 112)

;

SELECT @MAXSEQ = MAX(SEQ) FROM MARTDB..EMPLOYEE_HISTORY

WHERE EMP_NO = @N_EMP_NO

   AND FROM_DATE= CONVERT(CHAR(8), GETDATE(), 112)

;

--신규 정보로 넣음

INSERT INTO EMPLOYEE_HISTORY

(

EMP_NO

,FROM_DATE

,TO_DATE

,SEQ

,JOB_FLAG

)

VALUES(@N_EMP_NO

  ,CONVERT(CHAR(8), GETDATE(), 112)

  ,'29991231'

  ,1 + CASE WHEN @EXISTS_VAL > 0 THEN @MAXSEQ ELSE 0 END

  ,'I'

  )

END 

 

CLOSE TRIGGER_CUR;

DEALLOCATE TRIGGER_CUR;

 

SET NOCOUNT OFF;

END

 

사번테이블에 트리거를 걸려는데요,

EMPLOYEE테이블에 저장이 되면 EMPLOYEE_HISTORY에 FROM ~ TO로 히스토리 남길려고 하는데요.

위와같이 작성했는데 FOR를 AFTER로 바꾸면 2건씩 들어갑니다.

인터넷에서 찾아보니 FOR와 AFTER이 동일하다고 하는데 이유가 뭔지 모르겠네요.

[Top]
No.
제목
작성자
작성일
조회
7225alwayson구성시 계정 관리 [1]
초보
2020-07-27
2131
7224계층 구조에서 설정 적용하기 [1]
GOOD:)LUCK
2020-07-10
2203
7223MSSQL 대용량 처리 가능한가요? [1]
옛개발자
2020-07-02
2393
7222mssql trigger에 관해서
이게뭐지
2020-06-24
2271
7221대용량 데이터 삭제 관련입니다. [1]
인보
2020-06-20
2474
7219대량 데이터 처리시 조회속도 저하현상
개발자
2020-06-04
2186
7218수평 샤딩 타겟 DB를 효과적으로 찾는 방법이 궁금합니다~
이성원
2020-05-26
2030
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다