Referential Action

부모 키가 바뀔 때 자식 행의 처리 방식을 미리 정한다

참조 중인 부모 행을 삭제하거나 참조 대상 키를 수정하면 자식 외래키가 고아가 될 수 있습니다. 참조 동작은 그 순간의 처리 정책입니다.

현재 상태

orders.customer_id = 10

orders가 customers.id=10을 참조합니다.

customers.id orders.customer_id
10 10
문제가 되는 명령

참조 중인 부모 삭제

자식 행이 남아 있으므로 처리 정책이 필요합니다.

DELETE FROM customers WHERE id = 10;
RESTRICT 삭제/수정 거부

자식이 남아 있으면 부모 변경을 막습니다.

CASCADE 자식까지 전파

부모 삭제나 키 변경이 자식 행에도 적용됩니다.

SET NULL FK를 NULL로

외래키 컬럼이 NULL을 허용해야 합니다.

SET DEFAULT FK를 기본값으로

기본값도 참조 대상에 존재해야 합니다.

NO ACTION 검사 시점의 차이

표준은 지연 검사를 허용하지만 DBMS별 동작이 다릅니다.

실무 감각: CASCADE는 편하지만 삭제 범위가 커질 수 있습니다. 중요한 데이터는 RESTRICT로 보호하고, 보조 데이터에 제한적으로 쓰는 편이 안전합니다.