- 전체
- Sample DB
- database modeling
- [표준 SQL] Standard SQL
- G-SQL
- 10-Min
- ORACLE
- MS SQLserver
- MySQL
- SQLite
- postgreSQL
- 데이터아키텍처전문가 - 국가공인자격
- 데이터 분석 전문가 [ADP]
- [국가공인] SQL 개발자/전문가
- NoSQL
- hadoop
- hadoop eco system
- big data (빅데이터)
- stat(통계) R 언어
- XML DB & XQuery
- spark
- DataBase Tool
- 데이터분석 & 데이터사이언스
- Engineer Quality Management
- [기계학습] machine learning
- 데이터 수집 및 전처리
- 국가기술자격 빅데이터분석기사
- 암호화폐 (비트코인, cryptocurrency, bitcoin)
ORACLE 체크 제약조건 적용사례
2014.01.19 18:29
[출처] http://raltigue.tistory.com/53
체크 제약조건 적용사례
체크 제약조건 적용사례를 정리해보자.
아래와 같이 테이블을 준비하자. 테이블에는 경제지표 데이터가 저장되며 주별은 해당주의 일요일, 월별·분기별·연별은 각각 말일로 일자를 저장해야 한다. 즉 일별을 제외한 기간은 기간별로 각각 1건만 존재해야 한다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 |
CREATE TABLE t1 ( c1 VARCHAR2(5), -- 코드 c2 VARCHAR2(1), -- 기간 (D, W, M, Q, Y) c3 VARCHAR2(8), -- 일자 c4 NUMBER DEFAULT 0 NOT NULL -- 값 ); ALTER TABLE t1 ADD CONSTRAINT t1_pk PRIMARY KEY (c1, c2, c3); ALTER TABLE t1 ADD CONSTRAINT t1_c1 CHECK (c3 = CASE c2 WHEN 'D' THEN TO_CHAR (TO_DATE (c3, 'YYYYMMDD'), 'YYYYMMDD') WHEN 'W' THEN TO_CHAR (NEXT_DAY (TO_DATE (c3, 'YYYYMMDD') - 1, 1), 'YYYYMMDD') WHEN 'M' THEN TO_CHAR (LAST_DAY (TO_DATE (c3, 'YYYYMMDD')), 'YYYYMMDD') WHEN 'Q' THEN TO_CHAR (TRUNC (ADD_MONTHS (TO_DATE (c3, 'YYYYMMDD'), 3), 'Q') - 1, 'YYYYMMDD') WHEN 'Y' THEN TO_CHAR (TRUNC (ADD_MONTHS (TO_DATE (c3, 'YYYYMMDD'), 12), 'Y') - 1, 'YYYYMMDD') END); |
아래와 같이 쿼리를 실행하면 1~5행까지는 에러가 발생한다.
|
1
2
3
4
5
6
7
8
9
10 |
insert into t1 values('00001', 'D', '20120500', 1); -- ORA-01847 insert into t1 values('00001', 'W', '20120503', 2); -- ORA-02290 insert into t1 values('00001', 'M', '20120530', 3); -- ORA-02290 insert into t1 values('00001', 'Q', '20120531', 4); -- ORA-02290 insert into t1 values('00001', 'Y', '20120531', 5); -- ORA-02290 insert into t1 values('00002', 'D', '20120501', 1); insert into t1 values('00002', 'W', '20120504', 2); insert into t1 values('00002', 'M', '20120531', 3); insert into t1 values('00002', 'Q', '20120630', 4); insert into t1 values('00002', 'Y', '20121231', 5); |
① ORA-01847: 달의 날짜는 1에서 말일 사이어야 합니다 ② ORA-02290: 체크 제약조건(T1_C1)이 위배되었습니다
결과는 아래와 같다.
|
1
2
3
4
5
6
7
8
9
10
11
12 |
SELECT a.* FROM t1 a; C1 C2 C3 C4 ----- -- -------- -- 00002 D 20120501 1 00002 W 20120504 2 00002 M 20120531 3 00002 Q 20120630 4 00002 Y 20121231 5 5 rows selected. |
9i에서는 조회시 체크 제약조건이 필터 조건으로 사용된다...--; 아래와 같이 세션을 조정하면 해결할 수 있다.
|
1 |
ALTER SESSION SET EVENTS '10195 trace name context forever, level 1'; |
본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 공지 | 오라클 기본 샘플 데이터베이스 | 졸리운_곰 | 2014.01.02 | 87089 |
| 공지 | [SQL컨셉] 서적 "SQL컨셉"의 샘플 데이타 베이스 SAMPLE DATABASE of ORACLE | 가을의 곰을... | 2013.02.10 | 79307 |
| 공지 | [G_SQL] Sample Database | 가을의 곰을... | 2012.05.20 | 96038 |
| 13 |
[데이터 수집 및 전처리] 주식 전종목 어떻게 불러올까? 거래소 종목 불러오기
| 졸리운_곰 | 2023.12.09 | 1705 |
| 12 |
[데이터 수집 및 전처리] [Python/파이썬]네이버증권API 활용 - 회사명, 종목코드 받아오기
| 졸리운_곰 | 2023.12.08 | 1510 |
| 11 |
[데이터 수집 및 전처리] 네이버 금융(차트)에서 주가 갈무리(크롤링)하기
| 졸리운_곰 | 2023.12.08 | 1497 |
| 10 |
[데이터 수집 및 전처리] 네이버 증권에서 일봉, 주봉 데이터 가져오기
| 졸리운_곰 | 2023.12.08 | 1505 |
| 9 |
[데이터 수집 및 전처리] (놀라운) 한글 데이터 짱! AwesomeKorean_Data
| 졸리운_곰 | 2023.03.07 | 1200 |
| 8 |
[데이터 수집 및 전처리] Crawling, Scraping
| 졸리운_곰 | 2022.05.21 | 1477 |
| 7 |
[데이터분석][데이터수집 전처리] MS 엑셀(Excel)에서 UTF-8 로 된 csv 파일 가져오기
| 졸리운_곰 | 2021.09.30 | 1417 |
| 6 | 카프카 설치 시 가장 중요한 설정 4가지 | 졸리운_곰 | 2021.07.13 | 1933 |
| 5 |
Prometheus Query(PromQL) 기본 이해하기
| 졸리운_곰 | 2020.12.17 | 1416 |
| 4 |
[인프라 모니터링 오픈소스] Prometheus 를 알아보자
| 졸리운_곰 | 2020.12.17 | 1914 |
| 3 |
Prometheus + Grafana 대시보드
| 졸리운_곰 | 2020.12.17 | 2495 |
| 2 |
Grafana란?
| 졸리운_곰 | 2020.12.17 | 2166 |
| 1 | Importing wikipedia dump to MySql | 졸리운_곰 | 2020.10.04 | 2501 |

