본문 바로가기

Oracle/운영132

Pivot 함수와 Pivot XML Oracle 11g에서 나온 신기술(New Feature)로써 열과 행을 바꿔서 보여줄 수 있는 기능입니다. 티베로6기준으로는 Pivot 기능은 가능하지만 PivotXML은 구현되지 않습니다. Pivot함수는 내부적으로 그룹핑된 결과를 제공합니다. 그렇기 때문에 PIVOT절에서 그룹핑된 결과를 정의해야 하는데, GROUP BY가 들어간 쿼리와 같다고 생각하면 됩니다. 테스트 테이블생성 create table bae_pivot_test( id number, cost number, tx_date date, product_type varchar2(50)); 테스트 데이터 삽입 insert into bae_pivot_test values (1,10.99,sysdate-10,'Toy'); insert into b.. 2020. 8. 29.
특정 테이블의 컬럼의 Update만 인식하는 Trigger 생성하기 트리거란 일정 이벤트(DML)이 일어났을 때 자동으로 수행되는 사용자 정의 프로시저입니다. 보통은 테이블의 DML 작업이 있을 때 발동되는 트리거가 대부분인데요. 이번에는 테이블 내의 특정 컬럼만 트리거를 거는 방법을 알아보겠습니다. 시나리오는 특정 테이블의 컬럼에 Update가 되면 다른 테이블에 그 값이 Insert 되는 트리거를 생성하고 설정된 컬럼과 설정되지 않은 컬럼을 Update해보고 비교해보도록 하겠습니다. 테스트 테이블은 sample schema인 emp테이블을 활용하겠습니다. TEST@ysbae>create table tb_tri_test as select * from emp; Update값을 받을 테이블을 생성해줍니다. create table a_tr (sal number(10)); 트.. 2020. 8. 27.
NUMBER 데이터타입과 데이터타입 변경 NUMBER데이터타입은 NUMBER (precision, scale)형식으로 지정할수도 있고, NUMBER(precision)만 사용할수도 있습니다. precision(정밀도)란 정수 +소수점을 포함하여 표현할 수 있는 자릿수를 이야기하는것이고, scale(배율)은 소수점 몇자리까지 표현하느냐를 이야기하는것입니다. 999.99는 총5자리에 소수점 2자리이기 때문에 NUMBER(5,2)로 표현이 되어야 합니다. (이부분이 헷갈려서 컬럼데이터타입 변경할 떄, 에러가 나왔는데 왜 나왔는지 한참을 생각했습니다..) NUMBER에서 NUMBER로 변경 시 큰 제약사항 없이 바로 적용되는줄 알았는데, 소수점이 들어가버리면서 총표현자릿수가 줄어들어 결국엔 기존값들보다 작은 데이터타입이 만들어지려하니 에러를 발생시킨것.. 2020. 8. 26.
컬럼사이즈 변경 및 데이터타입 변경 테이블의 컬럼사이즈를 변경해달라는 요청이 가끔 있는데요, (저도 지원은 해주지만 까먹기 때문에...) 블로그에 기록차 적어놓고 한번더 정리하는 글을 남기려고 합니다. 컬럼사이즈변경 명령어 alter table [테이블명] modify ([컬럼명] [데이터타입]) 특징 - 컬럼사이즈 늘리는것은 바로 적용할 수 있습니다. (ex varchar2(20) -> varchar2(100)) - 컬럼사이즈를 줄이는것은 아래와 같은 제약사항이 있습니다. 변경을 하려는 컬럼에 값에 변경하려는 컬럼보다 큰 값이 들어가 있으면 안됩니다. 그렇지 않으면 ORA 에러가 발생합니다. ORA-01440: column to be modified must be empty to decrease precision or scale 컬럼사이.. 2020. 8. 25.