안녕하세요. SQLER의 코난 김대우입니다. 
이번 강좌에서는, 6-5. 데이터 무결성 - 규칙(RULE)을 진행 하겠습니다.


SQLER에서 진행되는, 챗GPT와 함께 배우는 SQL Server 강좌 목록

 

이번에 진행할 강좌는 데이터 무결성 - 규칙(RULE)입니다.

 

 

 

TL;DR

규칙(RULE)은 차기 버전에서 제거할 예정이며, CHECK 제약 사용을 가이드하고 있습니다. CHECK 제약을 활용하여 데이터의 무결성을 유지하고 사용하세요.

 


규칙 - RULE


지난 4-1. SQL Server 데이터베이스와 데이터베이스 개체의 이해 강좌에서 언급한 것처럼, 규칙은 SQL Server 차기 버전에서 제거될 예정입니다. CHECK 제약으로 RULE을 옮길 수 있으니, CHECK 제약 사용을 마이크로소프트는 공식 가이드 하고 있습니다.


짧게 이런 RULE이라는 데이터베이스 개체가 있구나 정도만 이해하고 다음 강좌를 진행하겠습니다. 공식 가이드 대로, 가급적이면 CHECK 제약을 이용하세요.

 

--RULE 테스트
USE AdventureWorks;
GO

-- 만약 테이블, Rule이 존재하면 삭제
IF OBJECT_ID(N'dbo.rule_test', N'U') IS NOT NULL  
   DROP TABLE dbo.rule_test;
IF OBJECT_ID(N'dbo.KR_SSN_rule', N'R') IS NOT NULL  
   DROP RULE dbo.KR_SSN_rule;  
GO

--테이블을 생성합니다.
CREATE TABLE rule_test(
  idx INT,
  KR_SSN VARCHAR(15)
);
GO

-- 주민등록번호 패턴을 체크하는 예제 RULE 생성(실제로는 애플리케이션에서 하세요)
CREATE RULE KR_SSN_rule   
AS  
@value LIKE '[0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9]';
GO

--생성한 RULE을 테이블 컬럼에 바인딩
EXEC sp_bindrule 'KR_SSN_rule', 'dbo.rule_test.KR_SSN';
GO

INSERT INTO rule_test VALUES(1, '123456-1234567');  -- 정상
GO

INSERT INTO rule_test VALUES(2, 'A23456-1234567');  -- RULE 위반
GO

오류 메시지
메시지 513, 수준 16, 상태 0, 줄 859
열 삽입이나 업데이트가 이전 CREATE RULE 문에서 설정한 규칙과 충돌하여 문이 종료되었습니다. 데이터베이스 'AdventureWorks', 테이블 'dbo.rule_test', 열 'KR_SSN'에서 충돌이 발생했습니다.
문이 종료되었습니다.

 

RULE은 별칭 데이터 형식(alias data type)이나 컬럼에 바인딩해 사용할 수 있습니다. CHECK 제약이 테이블에 연동된다면, RULE은 독립 데이터베이스 개체로 생성하고 바인딩해 사용하는 차이가 있습니다.
 

 

SQL 강좌 책 구매

강좌가 도움이 되셨다면, 책으로 구매 가능합니다. 책 판매 수익금은 전액 코딩 교육 사회공헌 활동에 기부되며, 아래 링크에서 구매하시면 더 많은 금액이 기부됩니다. 

 

책구매 링크: 챗GPT와 함께하는 마이크로소프트 SQL Server 2022 

책구매링크.png

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 21600
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 12231
2274 SQL강좌: 8-3. 저장 프로시저 - 매개변수(파라미터) 코난(김대우) 2023.08.18 48
2273 SQL강좌: 8-2. 저장 프로시저 - 생성과 실행 코난(김대우) 2023.08.18 43
2272 SQL강좌: 8-1. 저장 프로시저(Stored Procedure) - 소개 코난(김대우) 2023.08.18 53
2271 SQL강좌: 7-10. 실무에서 뷰 사용 코난(김대우) 2023.08.18 31
2270 SQL강좌: 7-9. 인덱싱된 뷰(Indexed View) file 코난(김대우) 2023.08.18 36
2269 SQL강좌: 7-8. 분할 뷰(Partitioned View) file 코난(김대우) 2023.08.18 25
2268 SQL강좌: 7-7. 뷰에서 데이터 수정 코난(김대우) 2023.08.18 26
2267 SQL강좌: 7-6. 뷰에서 뷰 생성 코난(김대우) 2023.08.18 26
2266 SQL강좌: 7-5. 뷰 옵션 코난(김대우) 2023.08.18 19
2265 SQL강좌: 7-4. 뷰 삭제 코난(김대우) 2023.08.18 12
2264 SQL강좌: 7-3. 뷰 수정 코난(김대우) 2023.08.18 27
2263 SQL강좌: 7-2. 뷰 생성 file 코난(김대우) 2023.08.18 27
2262 SQL강좌: 7-1. 뷰(VIEW) 소개 코난(김대우) 2023.08.18 38
2261 SQL강좌: 6-9. 데이터 무결성 - 데이터 무결성 주의사항 file 코난(김대우) 2023.08.18 39
2260 SQL강좌: 6-8. 데이터 무결성 - 트리거(TRIGGER) file 코난(김대우) 2023.08.18 65
2259 SQL강좌: 6-7. 데이터 무결성 - 사용자 정의 형식(User-Defined Type - UDT) 코난(김대우) 2023.08.18 26
2258 SQL강좌: 6-6. 데이터 무결성 - 기본값(DEFAULT) file 코난(김대우) 2023.08.18 18
» SQL강좌: 6-5. 데이터 무결성 - 규칙(RULE) 코난(김대우) 2023.08.18 29
2256 SQL강좌: 6-4. 데이터 무결성 - 체크 제약(CHECK Constraint) file 코난(김대우) 2023.08.18 34
2255 SQL강좌: 6-3. 데이터 무결성 - 기본 키(Primary Key) 제약, UNIQUE 제약, 외래 키(Foreign Key) 제약 file 코난(김대우) 2023.08.18 48





XE Login