/*
MySQL 5.0.2 이상/MariaDB 5.1 이상
*/
DELIMITER $$
-- 생성
CREATE TRIGGER {트리거}
{BEFORE | AFTER}
{INSERT | UPDATE | DELETE} -- 중복 선택 불가 / MariaDB 10.1.8 미만
ON {테이블}
FOR EACH ROW -- ROW 단위
BEGIN
DECLARE {변수} {타입};
/*
쿼리 작성 (트랜잭션 사용 제약)
*/
END
$$
DELIMITER ;
-- 삭제
DROP TRIGGER {트리거};
/*
MySQL 5.0.10 이상/MariaDB 5.1 이상
*/
-- 삭제
DROP TRIGGER IF EXISTS {트리거};
/*
MariaDB 10.1.3 이상
*/
DELIMITER $$
-- 생성/수정
CREATE OR REPLACE TRIGGER {트리거}
{BEFORE | AFTER}
{INSERT | UPDATE | DELETE} -- 중복 선택 가능 (OR) / MariaDB 10.1.8 이상
ON {테이블}
FOR EACH ROW -- ROW 단위
BEGIN
DECLARE {변수} {타입};
/*
쿼리 작성 (트랜잭션 사용 제약)
*/
END
$$
DELIMITER ;
/*
MSSQL 2000 이상
*/
-- 생성
CREATE TRIGGER {트리거} ON {테이블/뷰}
{INSTEAD OF | AFTER} -- 테이블
-- {INSTEAD OF} -- 뷰
{INSERT | UPDATE | DELETE} -- 중복 선택 가능 (콤마)
AS -- STATEMENT 단위
BEGIN
SET NOCOUNT ON;
DECLARE @{변수} {타입};
/*
쿼리 작성 (트랜잭션 사용 제약)
*/
END;
GO
-- 수정
ALTER TRIGGER {트리거} ON {테이블/뷰}
{INSTEAD OF | AFTER} -- 테이블
-- {INSTEAD OF} -- 뷰
{INSERT | UPDATE | DELETE} -- 중복 선택 가능 (콤마)
AS -- STATEMENT 단위
BEGIN
SET NOCOUNT ON;
DECLARE @{변수} {타입};
/*
쿼리 작성 (트랜잭션 사용 제약)
*/
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;
DECLARE @{변수} {타입};
/*
쿼리 작성 (트랜잭션 사용 제약)
*/
END;
GO
-- 삭제
DROP TRIGGER IF EXISTS {트리거};
/*
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 7.3 이상 (Single Quote 방식)
*/
-- 생성
CREATE FUNCTION {함수}()
RETURNS TRIGGER AS '
DECLARE
{변수} {타입};
BEGIN
/*
쿼리 작성 (트랜잭션 사용 제약)
*/
RETURN NEW; -- FOR EACH ROW > BEFORE > INSERT | UPDATE
-- RETURN OLD; -- FOR EACH ROW > BEFORE > DELETE
-- RETURN NULL; -- FOR EACH ROW > 작업 종료 (AFTER), 작업 무효화 (BEFORE), FOR EACH STATEMENT
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.0 이상 (Dollar Quoting 방식)
*/
-- 생성
CREATE FUNCTION {함수}()
RETURNS TRIGGER AS $$
DECLARE
{변수} {타입};
BEGIN
/*
쿼리 작성 (트랜잭션 사용 제약)
*/
RETURN NEW; -- FOR EACH ROW > BEFORE > INSERT | UPDATE
-- RETURN OLD; -- FOR EACH ROW > BEFORE > DELETE
-- RETURN NULL; -- FOR EACH ROW > 작업 종료 (AFTER), 작업 무효화 (BEFORE), FOR EACH STATEMENT
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER {트리거}
{BEFORE | AFTER}
{INSERT | UPDATE | DELETE} -- 중복 선택 가능 (OR)
ON {테이블}
FOR EACH ROW -- ROW 단위
-- FOR EACH STATEMENT -- STATEMENT 단위
EXECUTE PROCEDURE {함수}();
/*
PostgreSQL 8.4 이상 (Dollar Quoting 방식)
*/
-- 생성
CREATE FUNCTION {함수}()
RETURNS TRIGGER AS $$
DECLARE
{변수} {타입};
BEGIN
/*
쿼리 작성 (트랜잭션 사용 제약)
*/
RETURN NEW; -- FOR EACH ROW > BEFORE > INSERT | UPDATE
-- RETURN OLD; -- FOR EACH ROW > BEFORE > DELETE
-- RETURN NULL; -- FOR EACH ROW > 작업 종료 (AFTER), 작업 무효화 (BEFORE), FOR EACH STATEMENT
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER {트리거}
{BEFORE | AFTER}
{INSERT | UPDATE | DELETE | TRUNCATE} -- 중복 선택 가능 (OR), TRUNCATE (STATEMENT 단위)
ON {테이블}
FOR EACH ROW -- ROW 단위
-- FOR EACH STATEMENT -- STATEMENT 단위
EXECUTE PROCEDURE {함수}();
/*
PostgreSQL 9.1 이상 (Dollar Quoting 방식)
*/
-- 생성
CREATE FUNCTION {함수}()
RETURNS TRIGGER AS $$
DECLARE
{변수} {타입};
BEGIN
/*
쿼리 작성 (트랜잭션 사용 제약)
*/
RETURN NEW; -- FOR EACH ROW > BEFORE | INSTEAD OF > INSERT | UPDATE
-- RETURN OLD; -- FOR EACH ROW > BEFORE | INSTEAD OF > DELETE
-- RETURN NULL; -- FOR EACH ROW > 작업 종료 (AFTER), 작업 무효화 (BEFORE | INSTEAD OF), FOR EACH STATEMENT
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER {트리거}
{BEFORE | AFTER} -- 테이블
-- {INSTEAD OF} -- 뷰
{INSERT | UPDATE | DELETE | TRUNCATE} -- 중복 선택 가능 (OR), TRUNCATE (STATEMENT 단위)
ON {테이블/뷰}
FOR EACH ROW -- ROW 단위 (테이블/뷰)
-- FOR EACH STATEMENT -- STATEMENT 단위 (테이블)
EXECUTE PROCEDURE {함수}();
-- EXECUTE FUNCTION {함수}(); -- PostgreSQL 11.0 이상
-- 삭제
DROP TRIGGER IF EXISTS {트리거} ON {테이블/뷰};
DROP FUNCTION IF EXISTS {함수}();