[유튜브 방송] (즐겁게 배우는 SQL) 기획 소개에서 설명드린 즐겁게 배우는 SQL 47편을 공개해드리겠다. 47편은 트리거를 소개한다.
2021년 2월 9일자 [즐겁게 배우는 SQL #47] 트리거 - 트리거 방송은 다음에서 볼 수 있으며, 전체 방송 플레이리스트는 즐겁게 배우는 SQL에서 확인할 수 있다.
하이라이트를 요약 정리하면 다음과 같다:
- 00:00 트리거 기본 형식
- 07:13 BEFORE INSERT 트리거 예제
- 13:03 AFTER UPDATE 트리거 예제
- 17:47 트리거 제거 예제
원본 학습자료는 SQLite Trigger를 참고하고, 방송에 사용한 실제 실습 자료는 다음을 참고한다:
- 단계 1: 트리거 기본 형식
CREATE TRIGGER [IF NOT EXISTS] trigger_name [BEFORE|AFTER|INSTEAD OF] [INSERT|UPDATE|DELETE] ON table_name [WHEN condition] BEGIN statements; END;
- 단계 2: BEFORE INSERT 트리거 예제
- SQL> CREATE TABLE leads ( id integer PRIMARY KEY, first_name text NOT NULL, last_name text NOT NULL, phone text NOT NULL, email text NOT NULL, source text NOT NULL );
- SQL> CREATE TRIGGER validate_email_before_insert_leads BEFORE INSERT ON leads BEGIN SELECT CASE WHEN NEW.email NOT LIKE '%_@__%.__%' THEN RAISE (ABORT,'Invalid email address') END; END;
- SQL> INSERT INTO leads (first_name,last_name,email,phone) VALUES('John','Doe','jjj','4089009334');
- SQL> INSERT INTO leads (first_name, last_name, email, phone) VALUES ('John', 'Doe', 'john.doe@sqlitetutorial.net', '4089009334');
- SQL> INSERT INTO leads (first_name, last_name, email, phone, source) VALUES ('John', 'Doe', 'john.doe@sqlitetutorial.net', '4089009334', 'company');
- SQL> SELECT * FROM leads;
- 단계 3: AFTER UPDATE 트리거 예제
- SQL> CREATE TABLE lead_logs ( id INTEGER PRIMARY KEY, old_id int, new_id int, old_phone text, new_phone text, old_email text, new_email text, user_action text, created_at text );
- SQL> CREATE TRIGGER log_contact_after_update AFTER UPDATE ON leads WHEN old.phone <> new.phone OR old.email <> new.email BEGIN INSERT INTO lead_logs ( old_id, new_id, old_phone, new_phone, old_email, new_email, user_action, created_at ) VALUES ( old.id, new.id, old.phone, new.phone, old.email, new.email, 'UPDATE', DATETIME('NOW') ); END;
- SQL> UPDATE leads SET last_name = 'Smith' WHERE id = 1;
- SQL> UPDATE leads SET phone = '4089998888', email = 'john.smith@sqlitetutorial.net' WHERE id = 1;
- SQL> SELECT old_phone, new_phone, old_email, new_email, user_action FROM lead_logs;
- 단계 4: 트리거 제거 예제
- SQL> DROP TRIGGER validate_email_before_insert_leads;
댓글 없음:
댓글 쓰기