SQLite 트리거
SQLite 트리거는 데이터베이스의 콜백 함수로, 지정된 데이터베이스 이벤트가 발생할 때 자동으로 실행/호출됩니다. SQLite 트리거에 대한 주요 사항은 다음과 같습니다. SQLite Trigger(Trigger)는 데이터베이스의 콜백 함수로, 지정된 데이터베이스 이벤트가 발생하면 자동으로 실행/호출됩니다. 다음은 SQLite 트리거에 대한 주요 사항입니다.
SQLite의 트리거는 특정 데이터베이스 테이블에서 DELETE, INSERT 또는 UPDATE가 발생할 때 트리거되거나 하나 이상의 트리거가 발생할 때 트리거되도록 지정할 수 있습니다. 지정된 테이블의 열이 업데이트됩니다.
SQLite는 FOR EACH STATEMENT 트리거(트리거)가 아닌 FOR EACH ROW 트리거(트리거)만 지원합니다. 따라서 FOR EACH ROW를 명시적으로 지정하는 것은 선택 사항입니다.
WHEN 절과 트리거 작업은 NEW.column-name 및 OLD.column-name 형식을 사용하여 액세스할 수 있습니다. 삭제되거나 업데이트된 행 요소. 여기서 열 이름은 트리거와 연관된 테이블의 열 이름입니다.
WHEN 절이 제공되면 WHEN 절이 true인 지정된 행에 대해서만 SQL 문이 실행됩니다. WHEN 절이 제공되지 않으면 모든 행에 대해 SQL 문이 실행됩니다.
BEFORE 또는 AFTER 키워드는 관련 행의 삽입, 수정 또는 삭제 전 또는 후에 트리거 작업이 실행되는 시기를 결정합니다.
트리거와 연결된 테이블이 삭제되면 해당 트리거(Trigger)가 자동으로 삭제됩니다.
수정하려는 테이블은 트리거가 연결된 테이블이나 뷰와 동일한 데이터베이스에 존재해야 하며 tablename만 사용해야 하며 <는 사용하지 않아야 합니다. 🎜> 데이터베이스.테이블 이름.
- 특수 SQL 함수 RAISE()를 사용하여 프로그램 내에서 발생한 예외를 트리거할 수 있습니다.
트리거(Trigger)를 생성하는 기본 구문은 다음과 같습니다.
BEGIN
-- 트리거 로직은 여기에 있습니다....
END;
event_name은 언급된 테이블 table_name에 대한 INSERT, DELETE 및 UPDATE 데이터베이스 작업이 될 수 있습니다. 선택적으로 테이블 이름 뒤에 FOR EACH ROW를 지정할 수 있습니다.
다음은 UPDATE 작업 시 테이블의 하나 이상의 지정된 열에 트리거(Trigger)를 생성하는 구문입니다.BEGIN
-- 트리거 논리가 여기에 들어갑니다....
END;
예
새로 생성된 COMPANY 테이블에 삽입된 모든 레코드에 대해 감사 테스트를 유지하려는(또는 이미 존재하는 경우 삭제하고 다시 생성하려는) 상황을 가정해 보겠습니다.
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
계속 실험적인 감사를 위해 AUDIT라는 새 테이블을 만듭니다. COMPANY 테이블에 새 레코드 항목이 있을 때마다 해당 항목에 로그 메시지가 삽입됩니다.
EMP_ID INT NOT NULL,
ENTRY_DATE TEXT NOT NULL
);
여기서 ID는 AUDIT 레코드의 ID이고, EMP_ID는 COMPANY 테이블의 ID이며, DATE는 COMPANY의 레코드가 생성되었을 때의 타임스탬프를 보유합니다. 이제 다음과 같이 COMPANY 테이블에 트리거를 생성해 보겠습니다. EMP_ID, ENTRY_DATE) VALUES (new.ID, datetime('now'));
END;이제 COMPANY 테이블에 레코드 삽입을 시작하면 AUDIT 테이블이 생성됩니다. 에서 감사 로그 레코드를 생성합니다. 따라서 COMPANY 테이블에 다음과 같은 레코드를 생성해 보겠습니다.
sqlite> INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
ID NAME AGE ADDRESS SALARY
동시에 AUDIT 테이블에 레코드가 생성됩니다. 이 레코드는 INSERT 작업 시 COMPANY 테이블에 생성한 트리거의 결과입니다. 마찬가지로 필요에 따라 UPDATE 및 DELETE 작업에 대해 트리거를 생성할 수 있습니다.
---------- ------
1 2013-04 -05 06:26:00
트리거 나열(TRIGGERS)
아래와 같이 sqlite_master 테이블에서 모든 트리거를 나열할 수 있습니다.
WHERE type = 'trigger';
위의 SQLite 문은 다음과 같이 하나의 항목만 나열합니다.
----------
audit_log
특정 테이블의 트리거를 나열하려면 AND를 사용하세요. 이 절은 테이블 이름을 다음과 같이 연결합니다.
WHERE type = 'trigger' AND tbl_name = 'COMPANY';
위의 SQLite 문은 항목 하나만 나열합니다.
----------
audit_log
트리거 삭제(TRIGGERS)
다음은 기존 트리거를 삭제하는 데 사용할 수 있는 DROP 명령입니다.