본문 바로가기

Server/DataBase2

[SQL] Trigger: 이벤트를 감지하여 DB에 자동으로 TriggerTrigger는 특정 테이블에 INSERT, DELETE, UPDATE 등의 이벤트가 발생하였을 때 데이터베이스상에서 자동 동작하도록 하는 기능이다. 서버/백엔드 개발자가 호출할 필요 없이, DB의 변화를 감지하여 자동으로 호출된다는 큰 장점을 가지고 있다. 필자는 trigger를 로깅에 사용하였다. 주문 정보를 담은 order 테이블에 변화가 감지되는 경우 logging 테이블에 이를 기록했는데, 특히 status에 관심을 가지고 기록하였다. (코드 전체)CREATE OR REPLACE FUNCTION log_order_status_trans()RETURNS TRIGGER AS $$BEGIN INSERT INTO public.order_status_trans_log(order_id, .. 2024. 6. 28.
[SQL] Cascade: 참조 무결성을 지키기 위한 방법 관계형 데이터베이스를 사용하다 보면 FK, 다른 테이블의 값을 그대로 저장하는 참조형 키를 사용하는 경우가 많다. 한 테이블의 PK를 참조하는 FK가 있을 경우, 해당 PK를 수정/삭제하여 그 값을 받아오던 FK가 갈 곳을 잃는 사태를 방지하기 위해 FK가 참조하는 키는 수정/삭제가 불가능하다. 참조 무결성을 위반한다는 에러가 발생하기 때문이다. 해당 키를 수정/삭제하기 위한 방법은 크게 2가지가 있다. 참조하는 FK의 값을 삭제하여 연결을 끊은 후 해당 키를 삭제한다.CASCADE를 활용한다. 1의 경우 어떤 FK가 해당 키를 참조하고 있는지 전부 알고 꼼꼼히 지워야 하고, 혹시라도 FK에 not null 조건이 걸려 있으면 이조차도 불가능하다는 단점이 있다.이때 사용하는 것이 CASCADE 옵션이다... 2024. 6. 28.