SQLite | 트리거(Trigger) | 트리거 삭제

트리거를 삭제하는 방법을 설명한다. 트리거는 직접 삭제하는 경우뿐만 아니라, 트리거가 설정되어 있던 테이블이 삭제된 경우에도 자동으로 삭제된다.

생성된 트리거 삭제

생성된 트리거를 삭제하려면 DROP TRIGGER 문을 사용한다. 형식은 다음과 같다.

DROP TRIGGER 트리거명;

그럼 실제로 트리거를 삭제해 보자. 삭제하기 전에 SQLite 명령 .schema를 사용하여 생성된 트리거를 확인한다.

.schema
sqlite> .schema
CREATE TABLE product (id integer, name text);
CREATE TABLE history (user text, name text, sales integer);
CREATE TRIGGER updateproduct update of name on product
begin
update history set name = new.name where name = old.name;
end;
sqlite> 

updateproduct 트리거를 삭제한다.

drop trigger updateproduct;
sqlite> drop trigger updateproduct;
sqlite> 

updateproduct 트리거를 삭제되었는지 .schema 명령을 실행하여 생성된 트리거를 확인한다.

.schema
sqlite> .schema
CREATE TABLE product (id integer, name text);
CREATE TABLE history (user text, name text, sales integer);
sqlite> 

updateproduct 트리거가 삭제된 것을 확인할 수 있다.

트리거가 설정된 테이블을 삭제한 경우

트리거가 설정된 테이블이 삭제되면 트리거도 자동으로 삭제된다.

실제로 확인을 해보도록 하겠다. “.schema” 명령으로 현재 생성되어 있는 테이블과 트리거를 표시한다.

.schema
.schema
CREATE TABLE product (id integer, name text);
CREATE TABLE history (user text, name text, sales integer);
CREATE TRIGGER updateproduct update of name on product
begin
update history set name = new.name where name = old.name;
end;
sqlite> 

혹시 위에서 트리거가 없다면 조회된 스키마를 이용해서 새로 만드길 바란다.

updateproduct 트리거는 product 테이블에 설정된 트리거이다. 그러면 product 테이블을 삭제하고 다시 .schema 명령을 실행해 본다.

drop table product;
sqlite> drop table product;
sqlite> 
sqlite> .schema
CREATE TABLE history (user text, name text, sales integer);
sqlite> 

product 테이블을 삭제하면 product 테이블에 설정된 updateproduct 트리거도 자동으로 삭제되는 것을 확인할 수 있다.