BC414 - 1 (오전)

Beemajor·2024년 8월 26일

본격적인 CRUD 프로그램 Let's go.


Delet 테이블 where 조건.
이게 일반적입니다. 하지만 delete from 테이블을 쓰면 다 날릴 수 있어요.


insert는 하나의 데이터를 추가합니다.
insert 하는 테이블과 스트럭처가 동일해야합니다.
그리고 첫 데이터는 성공적으로 등록되지만
같은 값을 넣고 실행하게 된다면 실패하게 됩니다.
cause PK동일. modify는 이런일이 없죠.


그리고 Fixed Value 처럼 고정된 값이 있음에도 코드로 insert 하면 성공적으로 들어가집니다.
그리고 코드를 돌려도 성공적으로 실행되었다고 뜹니다.
하지만 데이터테이블을 조회하면 그때 에러가 납니다, 항상 체크하는 습관을 들입시다.
항상 잘 체크하세요.


commit 은 저장하는 뜻이다.
Message s는 commit이 아닌데요.
message i는 commit이 맞습니다.
그래서 Roll Back 뒤에 씁니다.
Roll Back 은 이전 commit으로 돌리는 것입니다.

항상 성공하면 저장하는 (commit work) 하는 습관.
실패하면 돌아가는 (Roll Back)습관이 필요합니다.


Text table 에 있는 ctext 필드는 지금과 같이 텍스트 테이블에 직접 넣어줘야합니다람지.


all or noting 둘다 성공해야 넣어줍니다. 하나만 성공하면 버립니다.
roll back은 한번만 타요. return 되거든요.
우리는 항상 이런식으로 쓰려고 노력해야합니다.

아 그리고,
데이터베이스 프로그램에서는 텍스트 테이블에 있는 내용을 본 테이블에 입력하면
자동으로 두곳에 저장되지만, 프로그램에서 코드로 입력하는 것은 다르다.
코드로 두곳 모두에 저장해야만 한다.


이건 스트럭처 전체를 업데이트 한다는 것이다.
이렇게 쓰면 기존에 있던 레코드한줄에서 키값을 제외한 모든값이 지워진다.
키 값을 주지 않으면 update가 되지 않습니다.


Update 제대로하는법. 항상 where는 Key값을 정확하게 PK까지 줘야합니다.
update from은 스크럭처 자체를 업데이트하는 것이고,
update set where 은 부분 적으로 수정해주는 것이다.
update from 을 쓰지 마라는게 아니라 조심해서 쓰라는 거다.


message a는 roll back 과 같은 뜻이다.
insert 는 update를 시켜주지 못한다.
그리고 roll back 이 없다는 것은 자동 commit이다.
message a가 rollback 임에도 아래에 rollback 을 쓰는 이유는
message가 바뀌었을때 roll back이 안되는 상황을 막기 위해서이다.

insert 해보고 실패하면 이미 존재하는 레코드라는 거다.
그렇다면 update로 수정하면된다.
이 두가지를 합친게 modify.
update는 무한 반복가능하다.

insert table from structure.
UPDATE table from structure.
if sy-subrc <> 0.
 rollback work.
end if.

이런 식으로 쓰지마세요 인서트는 성공하든 실패하든 신경안쓴다는 말입니다.
update만 체크하겠다는건데, 항상 한 액션에 대해서 체크를 해야합니다.


profile
i'm Graphic Designer

0개의 댓글