* Powerbuilder 10.5

다음은 한 번 읽고 넘어가시면 됩니다.

Transaction 이란?
전산에서 연속적인 처리의 단위. 연속적인 처리라는 말은 처리해야 할 작업이 두 가지 이상임을 뜻합니다.
작업들이 에러없이 모두 성공적으로 수행되면 그 결과를 실제 전산에 반영하고, 만약 하나라도 에러가 발생하면 모든 작업의 수행을 취소해야 합니다.

만약에 ATM에서 A 계좌에서 B 계좌로 1000원을 계좌이체 할 경우의 전산처리는 다음과 같습니다.

1.A 계좌 금액에서 1000원을 뺀다.
2.B 계좌 금액에 1000원을 더한다.

만약 1번의 전산작업(insert, update) 이 처리되고 난 후에 2번에서 에러가 발생하면 1번 작업은 취소가 되어야 합니다. 이 때 취소가 가능한 처리 방식이 바로 Transaction 입니다.
Transaction 은 두 가지 이상의 전산 작업이 수행될 때, 데이터의 무결성을 확보할 수 있도록 합니다. 1번 작업과 2번 작업은 DBMS에 DML 문을 전달하는 것과 같습니다.
Transaction 을 지원하는 DBMS는 DML 문을 DBMS에 전달하고 난 다음, Commit 을 전달하면 실제 DB에 기록하게 되고 Rollback 을 전달하면 전달된 DML 문이 실행되기 전 상태로 돌려놓습니다.

여기서 얘기하는 Transaction 은 파워빌더의 Transaction object 와는 개념이 다릅니다. Transaction object 는 DBMS 접속 정보를 담고 있는 영역입니다.

Transaction 을 강의 중에 다루는 날이 올 것 같네요. 일단, 상식적으로 알아두세요.
DBMS에서 제공하는 Commit, Rollback 기능을 통해서 Transaction 이 구현될 수 있다는 정도로 이해하시면 됩니다.



지금까지 dw 를 통해서 DB의 데이터를 조회해 봤습니다.

SQL Plus 나 Golden 같은 클라이언트 프로그램은 오라클 서버에 접속해서 쿼리를 전송하고,
그 결과를 모니터링할 수 있는 기능을 제공합니다.

1. DBMS 접속
2. 쿼리 전송
3. 결과값 반환

파워빌더에서는 이러한 일들을 SQLCA와 dw, dw 컨트롤에서 합니다.
SQLCA 에 접속 정보를 저장한 뒤 DBMS에 접속하고 난 다음에 dw와 dw 컨트롤에서 SQLCA를 이용하여 쿼리를 전송하고 결과를 보여줍니다. SQLCA 와 dw는 파워빌더의 독특한 인터페이스죠.

쿼리문과 파워스크립트~ 그냥 한 번 봐두세요.
쿼리                     파워스크립트
Select 문                    Retrieve()
Update 문                   dw Item 수정 - Update()
Delete 문                    DeleteRow() - Update()


이번 시간에는 dw의 데이터를 수정한 다음 DB에 반영하는 실습을 해보겠습니다.
별표 5개 짜리입니다. 정말 중요하며 알아야 할 내용이 좀 많은 편입니다. 정신 바짝 차리시고~


과정은 다음과 같습니다.

1. dw 에서 수정하고자 하는 칼럼에 Tab Order 부여
2. Update Properties 설정
3. dw에서 데이터 수정
4. update 함수 호출



1. dw 에서 수정하고자 하는 칼럼에 Tab Order 부여

지금 test 어플리케이션을 실행해 보세요. (ctrl + R)
그리고 dw 를 클릭이나 더블클릭 해보세요. 수정할 수 있나요? 수정이 안됩니다.
그래서 수정할 수 있게 만들어 줘야합니다.

다시 파빌로 돌아와서 d_emp 를 열어보세요. 그리고

메뉴 - Format - Tab Order
또는


상단 아이콘 메뉴의 Tab Order




Tab Order 란 탭키를 눌렀을 때, Focus를 전달하는 순서입니다.
파빌에서는 Tab Order 를 부여하면 Focus가 가서 데이터를 수정할 수 있도록 합니다.

사원명의 빨간색 제로를 클릭하면 위 그림에서 보듯이 배경색이 빨간색으로 변경되었네요.

이 상태에서 숫자를 입력할 수 있습니다.

먼저, 사원명에 2, 직급에 9  요렇게 입력해 볼까요?

상단 아이콘 메뉴에서 Tab Order 를 클릭하면 Tab Order 가 사라 집니다. 그리고 다시 Tab Order를 클릭하세요.
어떤가요? 사원명은 10, 직급은 20 으로 변경됩니다. 파빌에서 자동으로 그렇게 잡아 줍니다.
거기 다가 어떤 숫자를 입력하더라도 입력된 숫자를 오름차순으로 10, 20, 30, 40... 단위의 숫자로 변경해서 부여합니다.

지금은 사원명만 수정합니다. 사원명은 그대로 두고 직급의 Tab Order 만 0 으로 변경하세요.



2. Update Properties 설정

d_emp 에서

메뉴 - Rows - Update Properties


요넘 요거 정말 중요한 넘입니다. 이거 설정 잘 못해서 헤매는 분들 많이 봤거든요.

파빌에서 SQLCA, dw ....뭐 이런걸 쓴다고 해도 결국 DBMS에 전달되는 것은 쿼리문입니다.

파빌에서는 결국 마지막에 쿼리문을 만들어서 DBMS에 전송하는 거죠.








Select 문은 dw 에 포함이 되어 있으니 따로 만들 필요가 없습니다.

DML문 (Insert문, Update 문, Delete문)을 만들 때 Update Properties 를 참조합니다.

그럼 하나 하나 살펴보죠.

* Allow Updates
체크하면 Update Properties 를 입력할 수 있게 됩니다.
Updates 는 Insert문, Update문, Delete문 모두를 뜻합니다.

* Table to Updates
드랍다운리스트박스를 열어보면 dept, emp 테이블 중 하나를 선택할 수 있습니다.
dw 생성 쿼리에 있는 테이블들의 목록이죠.
이중 단 하나의 테이블만 Updates 가 가능합니다.
한 개의 dw는 한 개의 테이블만 수정할 수 있습니다.
수정할 칼럼이 사원명이므로 emp 테이블을 선택합니다.

*Updatable Columns
update할 칼럼들을 선택합니다.
필수선택 항목이므로 update, insert 를 하지 않는다-delete 만 한다-면 임의의 칼럼을 선택합니다.
수정할 칼럼이 사원명이므로 emp_ename 을 선택합니다.

*Unique Key Column(s)
Primary Key 를 정합니다. 오른편의 Primary Key 버튼을 클릭하면 자동으로 잡아줍니다.
필수선택항목이므로 건너뛰면 안됩니다.

* Where Clause for Update/Delete
Update 또는 Delete 문에 포함되는 Where 절의 조건으로 입력할 칼럼들을 정합니다.
여기서는 Key Columns 를 선택합니다.

Update 문을 예를 들어 설명하겠습니다.
정확한 설명을 위해 Updatable Columns 에서 emp_ename, emp_job 을 선택했다고 가정합니다.

- Key Columns 선택시

Update emp
set ename = 수정 후 사원명
where empno = 사원명을 수정할 사원의 사원번호


- Key and Updatable Columns 선택시

Update emp
set ename = 수정 후 사원명
where empno = 사원명을 수정할 사원의 사원번호
and ename = 수정 전 사원명
and job = 사원명을 수정할 사원의 직업


- Key and Modified Columns 선택시

Update emp
set ename = 수정 후 사원명
where empno = 사원명을 수정할 사원의 사원번호
and ename = 수정 전 사원명


* Key Modification
 Key 는 Primary Key를 의미합니다.
어떤 DBMS 는 Key 칼럼의 수정을 허용하지 않습니다. 
그럴 때 Use Delete then Insert 를 사용합니다. 그럼 Delete 문과 Insert 문을 순서대로 전달합니다.
여기서는 Use Update 를 선택합니다.

* Identity Column
Insert 시에 칼럼의 값이 Autoincrement 와 같은 옵션으로 DBMS 에 의해 자동으로 부여되게 설정했을 때, 그러한 칼럼을 파워빌더에서는 Identity Column 이라고 부릅니다. 
해당하는 칼럼을 선택하면 dw 에서 데이터를 insert 할 경우 자동으로 값이 입력됩니다.
여기서는 그러한 칼럼이 없으므로 (None) 으로 둡니다.



where 절 생성 부분은 파워빌더로 만든 어플리케이션을 두 사람 이상 사용한다고 했을 때,
사용자의 의도와 부합하게 데이터가 수정될 수 있도록 정확한 조건을 주기 위해서 사용합니다.
여기서 다 이해하는 것은 불가능하니, 이해가 안되더라도 걍 넘어가세요.

위와 같이 설정을 하고 OK버튼 클릭~


3. dw에서 데이터 수정
test 어플리케이션을 실행하고 사원명을 수정할 수 있는지 확인합니다.
Tab Order 를 부여하면 수정할 아이템에 커서를 위치할 수 있고 아이템을 수정할 수 있게 됩니다.
(파빌에서 아이템(item)이란 각각의 데이터를 뜻합니다.)

실행해서 확인해 보고 넘어가겠습니다.


4. update 함수 호출

이 부분은 설명할 내용이 적지 않기 때문에 다음 강의에 진행하겠습니다.


다시 말씀 드리지만, 너무 너무 중요한 부분입니다. 꼭 숙지하시고 궁금한 점은 댓글로 남기세요.

수고하셨습니다.


* 댓글을 보면 힘이 나요~.

* 질문은 댓글로 남기세요.

Posted by A4M
,