ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • DB 트리거 (TRIGGER ) DML트리거와 DDL트리거 DCL트리거
    Database/MS-SQL 2008. 10. 20. 10:04
    반응형
    관계형 데이터 베이스를 한다면 트리거를 사용할줄 알아야한다

    DDL(Data Definition Language) 은 데이터베이스의 스키마 객체를 생성(CREATE),

     변경(ALTER), 제거(DROP) 하거나 권한의 부여나 박탈(GRANT, REVOKE), 주석(COMMENT),

     자료의 버림(TRUNCATE) 등을 수행하는 문장의 집단을 의미한다.

     각 문장은 CREATE, ALTER, DROP, TRUNCATE, GRANT, REVOKE, COMMENT 등으로 시작한다.

     이 밖에도 많은 종류의 DDL이 존재한다. 그러나 PL/SQL 블록에서는 DDL을 사용할 수 없다.

      

    DML(Data Manipulation Language)은 스키마 객체의 데이터를 입력(INSERT), 수정(UPDATE),

    [Manipulation=교묘한처리,조종]

     조회(SELECT), 삭제(DELETE)하거나 테이블에 잠금을 설정하거나 (LOCK TABLE), SQL문의

     처리의 절차에 대한 정보를 얻거나 (EXPLAIN PLAN), PL/SQL 모듈을 호출하는 작업(CALL)의 집단이다.

     각 문장은 INSERT, UPDATE, DELETE, SELECT, LOCK TABLE, EXPLAIN PLAN, CALL 등으로 시작된다.

     PL/SQL의 모듈에서 사용할 수 없는 DML로서는 EXPLAIN PLAN과 CALL이 있다.


    DCL(Data Control Language)은 트랜잭션의 성격을 제어하는 것으로서 SET TRANSACTION,

     COMMIT, ROLLBACK, SAVEPOINT와 같은 종류가 있다.

     PL/SQL 모듈에서는 DCL을 사용할 수 있고 DCL을 이용하여 모듈의 트랜잭션을 제어 할 수 있다.

    -- 출처 : 네이버 검색


    트리거 (TRIGGER)

    제약조건과 더불어서 데이터의 무결성을 위한 또 다른 기능
    DML트리거와 DDL트리거 두 가지가 있음
    테이블 또는 뷰에 부착(Attach)되는 프로그램 코드
    저장 프로시저와 비슷하게 작동하지만 직접 실행시킬 수는 없고 오직 해당 테이블이나 뷰에 이벤트(입력, 수정, 삭제)가 발생할 경우에만 실행됨
    저장프로시저와 달리 매개변수나 리턴값을 사용할 수 없음


    생성 SQL 예제
    CREATE TRIGGER testTrg  -- 트리거 이름
    ON testTbl -- 트리거를 부착할 테이블
    AFTER  DELETE, UPDATE  -- 삭제,수정후에 작동하도록 지정
    AS
    PRINT('트리거가 작동했습니다') ; -- 트리거 실행시 작동되는 코드들


    트리거 기본작동하는 예제




    USE tempdb
    CREATE TABLE testTbl
    (
    id INT,
    txt NVARCHAR(5)
    )
    INSERT INTO testTbl VALUES(1, '우재남')
    INSERT INTO testTbl VALUES(2, '지운이')
    INSERT INTO testTbl VALUES(3, '한주영')

    CREATE TRIGGER testTrg  -- 트리거 이름 트리거 만들기
    -- ALTER TRIGGER testTrg
    ON testTbl -- 트리거를 부탁할 테이블

    AFTER DELETE, UPDATE , INSERT -- 에프터 (AFTER) 삭제, 수정후에 작동하도록 지정 
    AS
    PRINT('트리거가 작동했습니다@@@@???') -- 트리거 실행시 작동되는 코드들

    INSERT INTO testTbl VALUES(4, '담팅이')

    UPDATE testTbl SET txt = '우지운' WHERE id =2
    DELETE testTbl WHERE id =4


    SELECT * FROM testTbl




    반응형

    댓글

Designed by Tistory.