상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - SQLite에서 트리거(trigger)를 사용하는 방법은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
SQLite에서 트리거(trigger)는 특정 이벤트가 발생했을 때 자동으로 실행되는 SQL 명령어의 집합입니다. 트리거는 데이터베이스의 무결성을 유지하고, 자동화된 작업을 수행하는 데 유용합니다. 예를 들어, 데이터가 삽입, 업데이트 또는 삭제될 때 특정 작업을 자동으로 수행하도록 설정할 수 있습니다. 트리거의 기본 구성 요소 1. 이벤트 : 트리거가 실행되는 조건입니다. 일반적으로 `INSERT`, `UPDATE`, `DELETE` 중 하나입니다. 2. <a href='https://sangseek.com/sangseeks/타이밍/ko'>타이밍</a> : 트리거가 실행되는 시점입니다. `BEFORE` 또는 `AFTER`로 설정할 수 있습니다. `BEFORE`는 이벤트가 발생하기 전에, `AFTER`는 이벤트가 발생한 후에 트리거가 실행됩니다. 3. 대상 테이블 : 트리거가 적용될 테이블입니다. 4. 트리거 동작 : 트리거가 실행될 때 수행할 SQL 명령어입니다. 트리거 생성 방법 트리거를 생성하기 위해서는 `CREATE TRIGGER` 문을 사용합니다. <a href='https://sangseek.com/sangseeks/기본 구문/ko'>기본 구문</a>은 다음과 같습니다: ```sql CREATE TRIGGER trigger_name timing event ON table_name BEGIN -- SQL statements END; ``` 예제 1. INSERT 트리거 예제 : 사용자가 새로운 레코드를 추가할 때, 자동으로 `created_at` 필드를 현재 시간으로 설정하는 트리거를 만들어 보겠습니다. ```sql <a href='https://sangseek.com/sangseeks/CREATE TABLE/ko'>CREATE TABLE</a> users ( id INTEGER PRIMARY KEY, name TEXT, created_at DATETIME ); CREATE TRIGGER set_created_at BEFORE INSERT ON users BEGIN NEW.created_at = CURRENT_TIMESTAMP; END; ``` 위의 예제에서 `set_created_at` 트리거는 `users` 테이블에 새로운 레코드가 삽입되기 전에 `created_at` 필드를 현재 시간으로 설정합니다. 2. UPDATE 트리거 예제 : 사용자가 레코드를 업데이트할 때, `<a href='https://sangseek.com/sangseeks/updated/ko'>updated</a>_at` 필드를 현재 시간으로 설정하는 트리거를 만들어 보겠습니다. ```sql CREATE TABLE products ( id INTEGER PRIMARY KEY, name TEXT, price REAL, updated_at DATETIME ); CREATE TRIGGER update_product_timestamp AFTER UPDATE ON products BEGIN UPDATE products SET updated_at = CURRENT_TIMESTAMP WHERE id = NEW.id; END; ``` 이 트리거는 `products` 테이블의 레코드가 업데이트된 후에 `updated_at` 필드를 현재 시간으로 설정합니다. 3. DELETE 트리거 예제 : 레코드가 삭제될 때, 삭제된 레코드를 기록하는 <a href='https://sangseek.com/sangseeks/로그 테이블/ko'>로그 테이블</a>에 추가하는 트리거를 만들어 보겠습니다. ```sql CREATE TABLE deleted_users ( id INTEGER, name TEXT, deleted_at DATETIME ); CREATE TRIGGER log_deleted_user AFTER DELETE ON users BEGIN INSERT INTO deleted_users (id, name, deleted_at) VALUES (OLD.id, OLD.name, CURRENT_TIMESTAMP); END; ``` 이 트리거는 `users` 테이블에서 레코드가 삭제될 때마다 해당 레코드의 정보를 `deleted_users` 테이블에 기록합니다. 트리거 관리 - 트리거 삭제 : 트리거를 삭제하려면 `DROP TRIGGER` 문을 사용합니다. ```sql DROP TRIGGER trigger_name; ``` - 트리거 확인 : SQLite에서는 `sqlite_master` 테이블을 조회하여 현재 데이터베이스에 존재하는 트리거를 확인할 수 있습니다. ```sql SELECT name FROM sqlite_master WHERE type='trigger'; ``` 주의사항 - 트리거는 무한 루프를 방지하기 위해 주의해서 사용해야 합니다. 예를 들어, 트리거가 다른 트리거를 호출하는 경우 무한 루프가 발생할 수 있습니다. - 트리거는 성능에 영향을 줄 수 있으므로, 필요한 경우에만 사용하는 것이 좋습니다. - 트리거 내에서 오류가 발생하면 해당 트랜잭션이 롤백됩니다. 결론 SQLite에서 트리거는 데이터베이스의 자동화 및 무결성 유지에 매우 유용한 도구입니다. 다양한 이벤트에 대해 자동으로 작업을 수행할 수 있도록 설정함으로써, 데이터베이스 관리의 효율성을 높일 수 있습니다. 트리거를 적절히 활용하면 데이터베이스의 일관성을 유지하고, 개발자의 수고를 덜 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기