SQL Server SET 자주쓰는 옵션 정리
① SET ANSI_NULLS
SET ANSI_NULLS ON : NULL = NULL 비교 시 값 반환 불가 ([컬럼명] IS NULL)
SET ANSI_NULLS OFF : NULL = NULL 비교 시 TRUE값 반환 ([컬럼명] = NULL)
② SET QUOTED_IDENTIFIER
SET QUOTED_IDENTIFIER ON : 큰따옴표(" ")는 개체 이름으로, 작은따옴표(' ')는 문자열로 사용
SET QUOTED_IDENTIFIER OFF : 큰따옴표 (" ") 및 작은따옴표(' ')를 모두 문자열로만 사용
③ SET NOCOUNT
SET NOCOUNT ON : 영향을 받은 행 수 메시지를 리턴값으로 받지 않음
SET NOCOUNT OFF : 영향을 받은 행 수 메시지를 리턴값으로 받음
④ SET XACT_ABORT
SET XACT_ABORT ON : 런타임 오류 발생 시 전체를 ROLL BACK
SET XACT_ABORT OFF : 런타임 오류 발생 시 오류난 부분만 ROLL BACK하고 나머지 쿼리문은 COMMIT
⑤ SET ROWCOUNT
SET ROWCOUNT N : n개의 행만 반환
SET ROWCOUNT 0 : 모든 행 반환
⑥ SET ANSI_PADDING
SET ANSI_PADDING ON : CHAR(n) 컬럼에 n보다 작은 문자열 입력 시 공백 포
SET ANSI_PADDING OFF : CHAR(n) 컬럼에 n보다 작은 문자열 입력 시 공백 미포함
⑦ SET STATISTICS IO
SET STATISTICS IO ON : 통계정보 표시
SET STATISTICS IO OFF : 통계정보 미표시
⑧ SET TRANSACTION ISOLATION LEVEL ... 잠금 수준 관련
READ UNCOMMITTED : 캐시에는 변경되었으나 디스크에는 변경되지 않는 데이터를 읽는 행위 허용 (DIRTY READ)
READ COMMITTED : (기본값) 한번 읽은 데이터가 트랜잭션 커밋 이전에 변경되어 다시 읽었을 때 새로운 값으로 읽는 행위 허용 (UNREPEATABLE READ)
REPEATABLE READ : 트랜잭션 실행 중 삭제/신규 데이터를 읽는 행위 허용 (PHANTOM READ)
SNAPSHOT : 트랜잭션 실행 중 INSERT/DELETE 제한
SERIALIZABLE : 트랜잭션 실행 중 INSERT/DELETE 시 tempdb에 우선 적용 후, 트랜잭션 종료 시 원래 테이블에 적용
참고 자료
https://learn.microsoft.com/ko-kr/sql/t-sql/statements/set-statements-transact-sql?view=sql-server-ver16
http://egloos.zum.com/sweeper/v/3005129