topic난이도 · 약 15

DCL — 권한 & 트랜잭션 제어

GRANT · REVOKE · COMMIT · ROLLBACK · SAVEPOINT.

#SQL#DCL
왜 배우는가

권한 부여/회수와 트랜잭션 제어가 단답.

sql
-- 권한 부여
GRANT SELECT, INSERT ON 학생 TO 홍길동
  WITH GRANT OPTION;    -- 위임 가능

-- 권한 회수
REVOKE INSERT ON 학생 FROM 홍길동
  CASCADE;              -- 위임받은 자도 함께

-- 트랜잭션 제어
BEGIN;
UPDATE 계좌 SET 잔액 = 잔액 - 1000 WHERE id = 'A';
UPDATE 계좌 SET 잔액 = 잔액 + 1000 WHERE id = 'B';
COMMIT;

-- 부분 롤백
BEGIN;
INSERT ...;
SAVEPOINT sp1;
UPDATE ...;
ROLLBACK TO sp1;    -- sp1 이후만 취소
COMMIT;
명령분류역할
GRANTDCL권한 부여
REVOKEDCL권한 회수
COMMITTCL트랜잭션 확정
ROLLBACKTCL트랜잭션 취소
SAVEPOINTTCL부분 롤백 지점

WITH GRANT OPTION — 권한을 받은 사용자가 그 권한을 다른 사용자에게 재부여할 수 있게 허용. REVOKE 시 CASCADE를 붙이면 연쇄 회수.

실기 드릴 2문항
database실기 드릴 · SQL 작성

사용자 `user1`에게 `사원` 테이블에 대한 SELECT, INSERT 권한을 부여하되, 위임 가능하게 하는 SQL을 작성하시오.

edit실기 드릴 · 단답형

트랜잭션의 특정 지점까지만 롤백할 수 있게 지점을 설정하는 SQL 명령은?