본문 바로가기
카테고리 없음

[SQL Developer] DML문 없이 그리드 화면에서 데이터 수정하기

by 황금웃음만두 2020. 1. 3.

 디벨로퍼 기능 중 그리드 기능을 활용하여 조회 내역을 바로바로 수정하는 기능이 있습니다

 

이번 포스팅에서는 그리드에서 데이터를 추가, 삭제, 수정하는 것을 설명하고자 합니다

 

 

우선은 샘플 데이터를 아래와 같이 DB에 입력합니다

/* 작업내역 관리 샘플 테이블 */
CREATE TABLE EXER_WORK_LIST1(
WORK_NO NUMBER --작업번호
,WORK_TITLE VARCHAR2(100) NOT NULL--작업제목
,WORK_CONTENTS VARCHAR2(1000) --작업내용
,WORK_STTUS VARCHAR2(2) NOT NULL--작업상태
,WORK_STTUS_MODF_DATE DATE -- 작업상태변경일시
,WORK_STTUS_RM  VARCHAR2(1000) -- 작업상태 비고
,WORK_USER VARCHAR2(20) NOT NULL-- 작업자
,PRIMARY KEY (WORK_NO)
)

/* 작업상태 코드 WORK_STTUS
01 -- 작업대기
02 -- 작업시작
03 -- 작업완료
04 -- 작업보류
05 -- 작업취소
*/

INSERT INTO EXER_WORK_LIST1 VALUES ( 1 
                            , '데이터베이스 백업작업','금일 디비작업 전에 데이터베이스를 백업하여 롤백상황에 대비한다'
                            ,'01'
                            ,TO_DATE('2019-11-21','YYYY-MM-DD')
                            ,NULL
                            ,'홍길동');
INSERT INTO EXER_WORK_LIST1 VALUES ( 2 
                            , '데이터이관 작업(코드)','개발서버에서 테스트가 완료된 신규 공통코드를 운영서버에 추가한다'
                            ,'02'
                            ,TO_DATE('2019-12-01','YYYY-MM-DD')
                            ,NULL
                            ,'김유신');
                            
INSERT INTO EXER_WORK_LIST1 VALUES ( 3 
                            , '데이테베이스 ALERT 로그 조회','매월 유지보수 작업의 일환으로 유닉스 서버에 접속하여 설치된 오라클의 상태를 점검한다'
                            ,'04'
                            ,TO_DATE('2020-01-02','YYYY-MM-DD')
                            ,'엔지니어 일정 변경으로 인해 작업 보류, 일정 재수립 후 점검 진행 예정'
                            ,'홍길동');                            
COMMIT ;

 

테이블을 생성하고, 샘플데이터를 입력했다면 워크시트에서 데이터를 조회해봅니다

 

SELECT * FROM EXER_WORK_LIST1

 

일반 질의결과 탭에서 아래와 같이 조회결과가 출력됩니다

 

 

질의 결과에서 셀에 마우스를 올리면 연필모양의 아이콘이 나타나서 수정을 할수있겠거니 생각이 들 수 있는데요

더블 클릭하면 값 보기 화면만 보이고 수정 기능은 보이지 않습니다

 

 

그리드를 활용하여 수정작업을 하려면 다음 기능으로 이동해야 합니다

[왼쪽 패널 > 테이블목록 > 수정하고자 하는 테이블 클릭]

 

[상단 탭에서 데이터 탭 선택]

 

 

위처럼 데이터를 수정할 수 있는 그리드 화면이 나타납니다

 

위 기능은 주의해야 할 점이 있습니다

 

동시에 여러 사용자가 위 기능을 사용하여 같은 테이블을 작업할 때 발생하는 락 문제 때문에

 

작업을 한 후 다른 세션의 작업으로 인해 커밋을 할수없어서 작업한 결과를 날려먹을 수 있는 상황이 발생할 수 있습니다

* 상대가 커밋할때까지 기다리는 것이 아닌, 그리드를 리프레시해야 수정을 할 수 있습니다

 

메시지: 데이터가 다른/동일한 세션에서 커밋되었으므로 행을 업데이트할 수 없습니다.

 

위와같은 상황을 방지하는 방법은 본인이 작업할 행만 그리드에 표시하는 것입니다

 

 

 

 

상단에 필터는 WHERE절이며 WORK_NO= 2 라고 입력하면 한 행만 보여지게 됩니다

 

 

 

수정 작업 전에는 테이블 백업을 해두는 습관이 중요합니다. 잘못된 수정 후 롤백 계획도 항상 필요하다는것을 잊으면 안됩니다.

 

백업은 아래와 같이 CREATE AS SELECT 문을 활용합니다

 

테이블명 뒤에 #또는 $를 붙이면 백업용 테이블이라는 약속이 있다면 백업용 테이블 식별에 용이합니다

 

CREATE TABLE EXER_WORK_LIST1_BK# AS
SELECT * FROM EXER_WORK_LIST1

 

 

 

아래와 같이 수정작업을 해보시기 바랍니다

 

 

 

수정 후 제일 왼쪽에 1번행이 파란색표기가 되어있는것이 보입니다.

이것은 수정내역이 있으며 커밋 또는 롤백이 필요한 데이터라는것을 의미합니다

이 상태에서 다른 작업을 실행시키면

다음과 같이 예(커밋), 아니오(롤백)을 물어보게 됩니다

 

필터 옆에 커밋, 롤백 버튼을 통해서도 적용이 가능합니다

 

 

행을 추가하는 경우 녹색(상단 종이+버튼)

행을 삭제하는 경우 빨강색(상단 X버튼*삭제취소시 한번 더 클릭)으로 그리드에 표기됩니다

 

 

 

그리드에서 수정한 내역을 다시 질의결과로 조회해본 결과는 다음과 같습니다

 

 

그리드에서 셀 크기 조절이 필요한 경우 그리드 헤더에 오른쪽 마우스를 클릭하면 조절기능이 나타납니다

 

헤더를 끌어서 위치를 변경하는 것도 가능합니다

 

 

 

 

 

 

 

 

 

 

 

이것으로 SQL Developer 그리드 기능 포스팅을 마칩니다

 

 

 

댓글