USE [WEIGHDB]
GO
/****** Object: Trigger [dbo].[TB_CUSTO_IUD] Script Date: 2017-12-19 오후 3:48:03 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date:
-- Description:
-- =============================================
ALTER TRIGGER [dbo].[TB_CUSTO_IUD] -- 트리거명
ON [dbo].[TB_CUSTO] -- 트리거만들 테이블
AFTER INSERT,DELETE,UPDATE -- 트리거가 실행될 조건
AS
BEGIN
SET NOCOUNT ON;
DECLARE @CUSTONO varchar(15) -- 변수 선언
DECLARE @V_CUSTONO varchar(15)
DECLARE @V_CUSTONM varchar(50)
DECLARE @V_Rem1 varchar(100)
DECLARE @EVT_TYPE varchar(1)
IF(COLUMNS_UPDATED() > 0) -- COLUMNS_UPDATED는 insert와 update시 실행
BEGIN
SET @EVT_TYPE = 'U' -- 변수에 Set하여 값을 넣어준다.
SELECT @V_CUSTONO = CUSTONO, @V_CUSTONM = CUSTONM, @V_Rem1 = Rem1 FROM inserted -- 입력, 수정된값을 가져온다.
END
ELSE
BEGIN
SET @EVT_TYPE = 'D'
SELECT @V_CUSTONO = CUSTONO, @V_CUSTONM = CUSTONM, @V_Rem1 = Rem1 FROM deleted -- 수정, 삭제된 값을 가져온다.
END
BEGIN
MERGE INTO TB_CUSTO_IF CUSTO_IF
USING (SELECT @V_CUSTONO, @V_CUSTONM, @V_Rem1) CUSTO (CUSTONO, CUSTONM, Rem1)
ON (CUSTO_IF.CUSTONO = @V_CUSTONO) -- 위 USING은 오라클에서 SELECT FROM DUAL을 이렇게 대체했다.
WHEN MATCHED THEN -- ON조건에 따라 UPDATE & INSERT 문 각각 실행한다.
UPDATE SET
CUSTONM = CUSTO.CUSTONM,
REM = CUSTO.Rem1,
IF_YN = 'N',
EVT_TYPE= @EVT_TYPE
WHEN NOT MATCHED THEN
INSERT (CUSTONO,
CUSTONM,
REM,
IF_YN,
EVT_TYPE)
VALUES (CUSTO.CUSTONO,
CUSTO.CUSTONM,
CUSTO.Rem1,
'N',
@EVT_TYPE);
END
END