문제
다음 SQL 쿼리에서 사용자 권한을 확인하고 접속 로그를 기록하는 가장 적절한 방법은?
SQL-- 사용자가 고객 정보를 조회할 때마다 권한을 확인하고 -- 접속 이력을 기록해야 하는 상황 SELECT customer_id, customer_name, phone, email FROM customers WHERE customer_id = 1001;
① 뷰(VIEW)를 생성하여 권한이 있는 사용자만 특정 컬럼에 접근하도록 제한하고, 트리거로 접속 로그 기록 ② 저장 프로시저를 생성하여 권한 확인 로직과 접속 로그 기록을 함께 처리 ③ CASE 문을 사용하여 권한에 따라 컬럼 값을 조건부로 표시하고, UNION으로 로그 테이블에 삽입 ④ 서브쿼리로 권한을 확인하고 EXISTS 절로 접속 로그를 동시에 기록
정답
2번
해설
저장 프로시저는 권한 확인 로직과 접속 로그 기록을 하나의 실행 단위로 처리할 수 있어 가장 적절하다. ①번의 뷰는 정적 권한 제어에는 좋지만 동적 로그 기록이 어렵고, ③번의 CASE문과 UNION은 문법적으로 부적절하며, ④번의 EXISTS 절로는 로그 기록이 불가능하다.