사용자 도구

사이트 도구


사이드바

기술문서:레퍼런스:쿼리:기본:객체:트리거

문서의 이전 판입니다!


트리거

최소 지원 버전은 약간의 차이가 있을 수 있습니다.

MySQL/MariaDB

/*
	MySQL 5.0.2 이상/MariaDB 5.1 이상
*/
-- 생성
DELIMITER $$

CREATE TRIGGER {트리거}
	{BEFORE | AFTER}
	{INSERT | UPDATE | DELETE} -- 중복 선택 불가
	ON {테이블}
	FOR EACH ROW -- ROW 단위
BEGIN
	/*
		쿼리 작성
	*/
END
$$

DELIMITER ;

-- 삭제
DROP TRIGGER {트리거};

/*
	MySQL 5.0.10 이상/MariaDB 5.1 이상
*/
-- 삭제
DROP TRIGGER IF EXISTS {트리거};

MSSQL

/*
	MSSQL 2000 이상
*/
-- 생성
CREATE TRIGGER {트리거} ON {테이블/뷰}
	{INSTEAD OF | AFTER} -- 테이블
	-- {INSTEAD OF} -- 뷰
	{INSERT | UPDATE | DELETE} -- 중복 선택 가능 (콤마)
	AS -- STATEMENT 단위
BEGIN
	SET NOCOUNT ON;
	/*
		쿼리 작성
	*/
END;
GO

-- 삭제
DROP TRIGGER {트리거};

/*
	MSSQL 2016 이상
*/
-- 생성/수정
CREATE OR ALTER TRIGGER {트리거} ON {테이블/뷰}
	{INSTEAD OF | AFTER} -- 테이블
	-- {INSTEAD OF} -- 뷰
	{INSERT | UPDATE | DELETE} -- 중복 선택 가능 (콤마)
	AS -- STATEMENT 단위
BEGIN
	SET NOCOUNT ON;
	/*
		쿼리 작성
	*/
END;
GO

-- 삭제
DROP TRIGGER IF EXISTS {트리거};

Oracle/Tibero

/*
	Oracle 8i 이상/Tibero 5 이상
*/
-- 생성
CREATE TRIGGER {트리거}
	{BEFORE | AFTER} -- 테이블
	-- {INSTEAD OF} -- 뷰
	{INSERT | UPDATE | DELETE} -- 중복 선택 가능 (OR)
	ON {테이블/뷰}
	FOR EACH ROW -- ROW 단위 (생략 시 STATEMENT 단위)
DECLARE
	-- 변수 선언
BEGIN
	/*
		쿼리 작성
	*/
END;
/

-- 삭제
DROP TRIGGER {트리거};

/*
	Oracle 8i 이상/Tibero 6 이상
*/
-- 생성/수정
CREATE OR REPLACE TRIGGER {트리거}
	{BEFORE | AFTER} -- 테이블
	-- {INSTEAD OF} -- 뷰
	{INSERT | UPDATE | DELETE} -- 중복 선택 가능 (OR)
	ON {테이블/뷰}
	FOR EACH ROW -- ROW 단위 (생략 시 STATEMENT 단위)
DECLARE
	-- 변수 선언
BEGIN
	/*
		쿼리 작성
	*/
END;
/

/*
	Oracle 23c
*/
-- 삭제
DROP TRIGGER IF EXISTS {트리거};

PostgreSQL


/*
	PostgreSQL 7.3 이상
*/
-- 생성
CREATE FUNCTION {함수}()
-- CREATE OR REPLACE FUNCTION {함수}()
RETURNS TRIGGER AS $$
DECLARE
	-- 변수 선언
BEGIN
	/*
		쿼리 작성
	*/
	RETURN NEW; -- BEFORE > INSERT, UPDATE
	-- RETURN OLD; -- BEFORE > DELETE
	-- RETURN NULL; -- AFTER
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER {트리거}
	{BEFORE | AFTER}
	{INSERT | UPDATE | DELETE} -- 중복 선택 가능 (OR)
	ON {테이블}
	FOR EACH ROW -- ROW 단위
	-- FOR EACH STATEMENT -- STATEMENT 단위
	EXECUTE PROCEDURE {함수}();

-- 삭제
DROP TRIGGER {트리거} ON {테이블};
DROP FUNCTION {함수}(); -- 인자 타입 명시

/*
	PostgreSQL 8.4 이상
*/
-- 생성
CREATE FUNCTION {함수}()
-- CREATE OR REPLACE FUNCTION {함수}()
RETURNS TRIGGER AS $$
DECLARE
	-- 변수 선언
BEGIN
	/*
		쿼리 작성
	*/
	RETURN NEW; -- BEFORE > INSERT, UPDATE
	-- RETURN OLD; -- BEFORE > DELETE
	-- RETURN NULL; -- AFTER
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER {트리거}
	{BEFORE | AFTER}
	{INSERT | UPDATE | DELETE | TRUNCATE} -- 중복 선택 가능 (OR)
	ON {테이블}
	FOR EACH ROW -- ROW 단위
	-- FOR EACH STATEMENT -- STATEMENT 단위
	EXECUTE PROCEDURE {함수}();

/*
	PostgreSQL 9.1 이상
*/
-- 생성
CREATE FUNCTION {함수}()
-- CREATE OR REPLACE FUNCTION {함수}()
RETURNS TRIGGER AS $$
DECLARE
	-- 변수 선언
BEGIN
	/*
		쿼리 작성
	*/
	RETURN NEW; -- BEFORE > INSERT, UPDATE
	-- RETURN OLD; -- BEFORE > DELETE
	-- RETURN NULL; -- AFTER, INSTEAD OF
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER {트리거}
	{BEFORE | AFTER} -- 테이블
	-- {INSTEAD OF} -- 뷰
	{INSERT | UPDATE | DELETE | TRUNCATE} -- 중복 선택 가능 (OR), TRUNCATE (테이블)
	ON {테이블/뷰}
	FOR EACH ROW -- ROW 단위 (테이블/뷰)
	-- FOR EACH STATEMENT -- STATEMENT 단위 (테이블)
	EXECUTE PROCEDURE {함수}();

-- 삭제
DROP TRIGGER IF EXISTS {트리거} ON {테이블/뷰};
DROP FUNCTION IF EXISTS {함수}(); -- 인자 타입 명시

/*
	PostgreSQL 11.0 이상
*/
-- 생성
CREATE FUNCTION {함수}()
-- CREATE OR REPLACE FUNCTION {함수}()
RETURNS TRIGGER AS $$
DECLARE
	-- 변수 선언
BEGIN
	/*
		쿼리 작성
	*/
	RETURN NEW; -- BEFORE > INSERT, UPDATE
	-- RETURN OLD; -- BEFORE > DELETE
	-- RETURN NULL; -- AFTER, INSTEAD OF
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER {트리거}
	{BEFORE | AFTER} -- 테이블
	-- {INSTEAD OF} -- 뷰
	{INSERT | UPDATE | DELETE | TRUNCATE} -- 중복 선택 가능 (OR), TRUNCATE (테이블)
	ON {테이블/뷰}
	FOR EACH ROW -- ROW 단위 (테이블/뷰)
	-- FOR EACH STATEMENT -- STATEMENT 단위 (테이블)
	EXECUTE FUNCTION {함수}();