일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 윈도우10
- vscode
- Visual Studio Code
- rs422
- 오라클
- scrapy
- M2M
- Python
- django
- oracle
- sql developer
- windows10
- 텐서플로우
- PYTHON MSSQL
- MEAN Stack
- 장고
- MSSQL
- MSSQL PYTHON
- 딥러닝
- pymssql
- 자본주의
- 티스토리 초대장
- matplot
- tensorflow
- rs485
- 크롤링
- MX Component
- 파이썬
- Serial
- c#
Archives
- Today
- Total
안까먹을라고 쓰는 블로그
[MSSQL] 트리거(Trigger) 본문
반응형
트리거(Trigger)
- 특정 테이블에 삽입, 수정, 삭제 등의 데이터 변경 이벤트가 발생하면 DBMS에서 자동적으로 실행되도록 구현 된 프로그램 입니다.
- 이벤트는 전체 트랜잭션 대상과 각행에 의해 발생되는 경우 모두를 포함할 수 있으며, 테이블과 뷰, DB 작업을 대상으로 정의할 수 있습니다.
트리거의 목적
- 특정 테이블에 대한 데이터 변경을 시작점으로 설정하고, 그와 관련된 작업을 자동적으로 수행하기 위해 트리거를 사용합니다.
- 일반적으로 이벤트와 관련된 테이블의 데이터 삽입, 추가, 삭제 작업을 DBMS가 자동적으로 실행시키는데 활용합니다.
트리거 예제소스
- ON [NEOE].[PU_POL] 과 같이 적용할 테이블을 지정
- AFTER UPDATE/INSERT/DELETE 등의 트리거를 적용할 작업 지정
. BEFORE, AFTER, INSTEAD OF 적용가능
- 업데이트 작업 시, 기존의 데이터는 삭제하고, 추가작업을 하는 방법으로 처리 됨.
. INSERTED : 업데이터 후의 데이터
. DELETED : 업데이터 전의 데이터
USE [NEOE]
GO
/****** Object: Trigger [NEOE].[TU_PU_POL] Script Date: 2022-09-26 오후 12:45:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [NEOE].[TU_Z_AUTON_PU_POL] ON [NEOE].[PU_POL] AFTER UPDATE
AS
BEGIN
DECLARE
@NUMROWS INT,
@ERRNO INT,
@ERRMSG NVARCHAR(255),
@CD_COMPANY NVARCHAR(7),
@NO_PO NVARCHAR(20),
@FG_POST_BEFORE NCHAR(3),
@FG_POST_AFTER NCHAR(3)
SELECT @NUMROWS = @@ROWCOUNT
IF @NUMROWS = 0
RETURN
IF UPDATE(FG_POST)
BEGIN
SELECT
@CD_COMPANY = I.CD_COMPANY, @NO_PO = I.NO_PO,
@FG_POST_AFTER = I.FG_POST, @FG_POST_BEFORE = D.FG_POST
FROM INSERTED I INNER JOIN DELETED D
ON I.CD_COMPANY = D.CD_COMPANY
AND I.NO_PO = D.NO_PO
AND I.NO_LINE = D.NO_LINE
IF @FG_POST_BEFORE = 'R' AND @FG_POST_AFTER = 'O' -- 'R'확정 -> 'O'미정
BEGIN
UPDATE PU_POH SET TXT_USERDEF4 = 'N'
WHERE CD_COMPANY = @CD_COMPANY
AND NO_PO = @NO_PO
END
IF @FG_POST_BEFORE = 'O' AND @FG_POST_AFTER = 'R' -- 'O'미정 -> 'R'확정
BEGIN
UPDATE PU_POH SET TXT_USERDEF1 = 'N'
WHERE CD_COMPANY = @CD_COMPANY
AND NO_PO = @NO_PO
AND TXT_USERDEF4 = 'N'
END
END
END
GO
끝~
반응형
'DataBase > MS SQL' 카테고리의 다른 글
[MSSQL] 프로시저 - 구간 별 성능체크 (0) | 2023.01.06 |
---|---|
[MSSQL] 오라클 다중 IN => MSSQL 구현 (0) | 2022.10.23 |
[MSSQL] MSSQL IN절에 필드 여러개 사용 (0) | 2022.09.19 |
[MSSQL] 트리거(TRIGGER) - 활성화(Enable)/비활성화(Disable) (0) | 2022.08.29 |
[MSSQL] OPENQUERY - BETWEEN 성능??? (Feat. ORACLE) (0) | 2022.08.12 |
Comments