SQLite는 트리거
SQLite는 데이터베이스 트리거는 호 / 지정된 데이터베이스 이벤트가 발생하면 자동으로 실행할 콜백 함수이다. 상기 트리거 SQLite는의 요점은 다음 : 지정된 데이터베이스 이벤트가 발생할 때 SQLite는트리거 (방아쇠)가 데이터베이스의 콜백 함수이고, 자동 / 호출을 실행한다.다음의 SQLite는 트리거 (트리거)에 대한 주요 사항은 다음과 같습니다 :
SQLite는 트리거 (방아쇠) 트리거는, INSERT 또는 UPDATE를 삭제 특정 데이터베이스 테이블의 발생시 지정하거나 테이블 업데이트의 하나 이상의 지정된 열이 발생할 때 트리거 될 수있다.
SQLite는하지 EACH STATEMENT 트리거 (방아쇠)의 경우, 각 ROW 트리거 (방아쇠)위한 지원합니다. 따라서, 명시 적으로 각 행은 선택 사항입니다 FOR 지정합니다.
절과 트리거 (트리거) 액션은 삽입, 삭제 양식NEW.column 이름과 OLD.column 이름참조 또는 업데이트 된 행 요소를 사용하여 액세스 할 수있는 경우, 열 이름은 테이블 열에서 트리거와 연관된 이름입니다.
제공되는 경우 절은, 만 절은 SQL 문을 실행하는 행을 지정하는 WHEN 마찬가지입니다 WHEN. 더 WHEN 절은 모든 행에 대해 SQL 문을 실행하지 않은 경우.
BEFORE 또는 AFTER 트리거 동작의 구현 후 키워드는 트리거 동작이 결정이 관련 라인에 삽입하거나 삭제하거나 수정하기 전에시기를 결정합니다.
테이블이 삭제 트리거와 관련된 경우 자동으로 트리거 (트리거)를 삭제합니다.
테이블에 트리거가 테이블이나 뷰를 부착와 같은 데이터베이스에 존재해야하며, 만테이블 이름 대신 database.tablename을사용해야합니다수정합니다.
특수 SQL 함수 인상 ()는 프로그램 내에서 예외를 트리거하는 데 사용될 수있다.
문법
다음과 같이 기본 구문은트리거 (트리거)를 만듭니다 :
트리거 trigger_name의를 CREATE [BEFORE | AFTER] EVENT_NAME TABLE_NAME ON BEGIN - 트리거 로직은 여기에 간다 koko END;
여기에, EVENT_NAME가INSERT의table_name테이블에서 언급 될수있다, DELETE 및 UPDATE 데이터베이스작업. 선택적으로 테이블 이름 뒤에 각 행에 대해 지정할 수 있습니다.
다음은 열 (트리거) 구문 트리거를 만들 때 하나 이상의 테이블에서 UPDATE 작업에 지정된 다음과 같습니다
COLUMN_NAME의 UPDATE | 트리거 trigger_name의 [AFTER BEFORE]을 CREATE TABLE_NAME ON BEGIN - 트리거 로직은 여기에 간다 koko END;
예
우리가 새로 만든 테이블 회사에 삽입 할 상황을 가정 (이미 존재하는 경우, 삭제, 재 작성)하자 기록 유지 감사 시험의 각 :
sqlite가> (TABLE 회사를 CREATE ID INT PRIMARY KEY NOT NULL, NULL NOT 이름 텍스트, NULL NOT AGE INT, 주소의 CHAR (50) SALARY의 REAL );
감사 시련을 유지하기 위해, 우리는 AUDIT라는 새로운 테이블을 생성합니다. 회사 테이블에 새 레코드 항목이 때마다 로그 메시지가 삽입됩니다 :
sqlite가> (표 AUDIT를 CREATE NULL NOT EMP_ID INT, ENTRY_DATE의 TEXT NULL NOT에게 );
여기서, ID는 감사 기록 ID, 회사 테이블에서 EMP_ID ID는 회사가 기록 될 때, 타임 스탬프를 유지합니다 DATE가 생성된다. 그래서, 이제 다음과 같이 우리가 회사 테이블에 트리거를 만들 수 있습니다 :
sqlite가> INSERT AFTER 트리거 audit_log을 CREATE 회사 ON BEGIN AUDIT INTO INSERT (EMP_ID, ENTRY_DATE) VALUES (new.ID, 날짜 ( '지금')); END;
우리는 지금 회사 테이블에 레코드를 삽입하기 시작합니다,이 감사 로깅 AUDIT 테이블의 생성으로 이어질 것입니다. 그래서, 다음의, 회사 테이블에 레코드를 만들 수 있습니다 :
sqlite가> 회사 INTO INSERT (ID, 이름, 나이, 주소, SALARY) VALUES (1, '폴', 32 '캘리포니아', 20000.00);
이것은 다음과 같은 테이블 회사의 레코드를 생성합니다 :
ID의 이름 나이 주소 급여 ---------- ---------- ---------- ---------- ---------- 1 폴 (32) 캘리포니아 20000.0
동시에, 우리는 AUDIT 테이블의 레코드를 작성합니다. 이 기록은 우리가 테이블을 만든 회사 (트리거)에 작업을 INSERT 트리거하는 트리거의 결과입니다. 마찬가지로, UPDATE에 트리거를 생성하고 삭제할 수 있습니다 작업 (트리거).
EMP_ID ENTRY_DATE ---------- ------------------- 12013-04-05 6시 26분 0초
목록 트리거 (TRIGGERS)
다음과같이,있는 sqlite_master 테이블의 모든 트리거를 나열 할 수 있습니다 :
있는 sqlite_master FROM sqlite가> SELECT 이름 WHERE 형 = '트리거';
다음과 같이 위의 SQLite는 문, 단 하나의 항목을 나열합니다 :
이름 ---------- audit_log
특정 테이블에 트리거를 나열하려면, 다음과 같이 테이블이 있었다 가입하는 AND 절을 사용 :
있는 sqlite_master FROM sqlite가> SELECT 이름 WHERE 형 = '트리거'와 tbl_name을 = '회사';
다음과 같이 위의 SQLite는 문, 단 하나의 항목을 나열합니다 :
이름 ---------- audit_log
트리거를 제거 (TRIGGERS)
다음은 DROP 명령은 기존의 트리거를 제거 할 수있다 :
sqlite가> DROP 트리거 trigger_name의;