일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- total
- 평균
- Depthwise Separagle Convolution
- 수치미분
- 오차제곱합
- Depthwise Convolution
- max
- sum
- 학습 구현
- 데이터베이스
- next.js 튜토리얼
- COUNT
- MIN
- Next.js
- 제약조건
- 신경망
- PYTHON
- 렐루함수
- PyQt5
- 합계
- sqlite3
- 시험데이터
- AVG
- join
- Pointwise Convolution
- sigmoid
- 미니배치
- 밑바닥부터 시작하는 딥러닝
- 최댓값
- 교차엔트로피오차
- Today
- Total
우잉's Development
SQLite3_ trigger 트리거 본문
1. Trigger 생성
Trigger : 특정 테이블의 데이터가 수정되면 동시에 다른 테이블의 데이터를 수정하고 싶은 경우 사용되는 것.
CREATE TRIGGER 트리거명 [ BEFORE | AFTER| INSTEAD OF ]
{ DELETE | UPDATE [OF 컬럼명, ...] | INSERT } ON 테이블명
[ FOR EACH ROW | FOR EACH STATEMENT ]
[ WHERE 조건식 ]
BEGIN
SQL문1;
SQL문2;
...
END;
SQL 문은 DELETE문, INSERT문, DELETE문이 있다.
UPDATE가 발생했을 때는 다음과 같이 작성할 수 있다.
CREATE TRIGGER 트리거명 UPDATE ON 테이블명
BEGIN
SQL문1;
SQL문2;
...
END;
또한 특정 컬럼에 UPDATE수행할 때 아래와 같이 작성할 수 있다.
CREATE TRIGGER 트리거명 UPDATE OF 컬럼명 ON 테이블명
BEGIN
SQL문1;
SQL문2;
...
END;
DELETE와 INSERT문이 시행 될때는 UPDATE부분만 DELETE와 INSERT문으로 변경해주면 된다.
실제로 만들어 보겠습니다.
위에는 product 테이블에 데이터를 추가/삭제/수정 되었을 때 각 트리거가 실행되어 log테이블 act컬럼에
로그를 기록한다는 트리거를 작성했다. 그러면 product 테이블에 데이터를 추가하거나 데이터를 수정하거나
삭제했을 때, 트리거가 실행되었는지 확인한다.
일단, 데이터를 추가후 log테이블 확인 해보겠다.
데이터를 추가하고 수정하고 지우면 log에 입력이 되는걸 확인할 수 있다.
2. BEFORE 트리거와 AFTER 트리거
데이터가 추가되었을 때에 실행되는 트리거를 생성하는 경우에는 먼저 데이터가 추가되고 나서 트리거에
설정된 SQL문이 실행되지만, BEFORE키워드를 지정하면 데이터 추가되기 전에 먼저 트리거에 작성된
SQL문이 시행된후에 데이터의 추가가 된다. (AFTER도 작성할 수 있지만, 기본동작이기 때문에 명시적으로
작성할 필요가 없다.)
CREATE TRIGGER 트리거명 BEFORE INSERT ON 테이블명
BEGIN
SQL문;
SQL문;
...
END;
3. 수정 이전과 이후의 데이터 값을 트리거에서 참조
NEW.컬럼명 과 OLD.컬럼명
NEW.컬럼명
OLD.컬럼명
테이블에 포함 된 데이터의 값을 수정 할 때 다른 테이블에 포함 된 같은 값도 동시에 수정하려는 경우
등에 사용할 수 있다. 간단한 예로 살펴보자.
4. 트리거 스키마(구조) 확인
.mode line
select * from sqlite_master where type = 'trigger';
혹은
.schema
5. 트리거 삭제
DROP TRIGGER 트리거명;
'개발 > SQLite3' 카테고리의 다른 글
SQLite3_SELECT 절과 ORDER BY절 (0) | 2022.01.05 |
---|---|
SQLite3_데이터 추가와 수정, 삭제 (0) | 2022.01.04 |
SQLite3_Index 인덱스 (0) | 2021.12.31 |
SQLite3_View 뷰 (0) | 2021.12.29 |
SQLite3_Table 2_제약 조건2 (0) | 2021.12.29 |