Latest web development tutorials

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
 - 트리거 로직은 여기에 간다 ....
END;

여기에, EVENT_NAME가INSERT의table_name테이블에서 언급 될수있다, DELETE 및 UPDATE 데이터베이스작업. 선택적으로 테이블 이름 뒤에 각 행에 대해 지정할 수 있습니다.

다음은 열 (트리거) 구문 트리거를 만들 때 하나 이상의 테이블에서 UPDATE 작업에 지정된 다음과 같습니다

COLUMN_NAME의 UPDATE | 트리거 trigger_name의 [AFTER BEFORE]을 CREATE 
TABLE_NAME ON
BEGIN
 - 트리거 로직은 여기에 간다 ....
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의;