database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 9905 게시물 읽기
No. 9905
함수 여러개를 하나의 트랜잭션에서 실행 안되나요?
작성자
지현명(gwise)
작성일
2017-10-31 01:27
조회수
6,335

BEGIN;

select usp_set_emp_udt_upsert(array[(1,'abc abc')]::employee_udt[]);

select usp_set_emp_udt_upsert(array[(2,'abc abc')]::employee_udt[]);

select usp_set_emp_udt_upsert(array[(3,'abc abc')]::employee_udt[]);

select usp_set_emp_udt_upsert(array[(4,'abc abc')]::employee_udt[]);

select usp_set_emp_udt_upsert(array[(5,'abc abc')]::employee_udt[]);

COMMIT;

 

이렇게 하고 테이블 나이 확인 하려고 하니 실행이 안됩니다.

 

JDBC에서 함수를 하나씩 실행하는 것을 executeBatch하면 원 트랜잭션으로 처리되서 나이가 1살만 증가할거라 생각했는데

실행한 함수 횟수만큼 증가해서 위에꺼 테스트하려니 안되네요.....그래서 JDBC에서 저걸 하나씩 실행했나 봅니다.

 

이렇다면 함수로 biz로직 작성하고 JDBC에서 호출하면 execute는 호출횟수 2배, executeBatch는 호출한 횟수만큼 테이블

나이가 증가했습니다.   

 

위에거 안되는거 맞나요?

이 글에 대한 댓글이 총 2건 있습니다.

혹시 함수 내용을 알수 있을까요 ?

김주왕(kimjuking)님이 2017-10-31 08:37에 작성한 댓글입니다.

 안녕하세요..

여기 붙여 넣기가 안되서 제 블로그에 올렸습니다. 

http://blog.naver.com/gwise/221129107015

감사합니다.

저 함수 하나씩 하면 정상으로 입력처리 됩니다.

pg에서는 함수 안에 있는 begin이 트랜잭션 begin이 아니라고 메뉴얼에 나왔는데

왜 위와 같은 경우는 트랜잭션 begin처럼 되는걸까요?..JDBC에서 executeBatch하면 함수 개별적으로 commit되서........ 위 와같은 특성이 있다하고 알면 되긴 하는데.....pg하면 할 수록 잼있습니다. 

지현명(gwise)님이 2017-10-31 09:07에 작성한 댓글입니다.
이 댓글은 2017-10-31 09:13에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
9908테이블 용량 확인 쿼리 [3]
postgres
2017-11-10
7715
9907윈도우 postgre 설치시 오류 질문드립니다 ㅠ [4]
디비
2017-11-09
8816
9906같은 쿼리가 특정 시점에 갑자기 느려지는 현상에 대한 도움이 필요합니다. [10]
배우미
2017-11-01
8522
9905함수 여러개를 하나의 트랜잭션에서 실행 안되나요? [2]
지현명
2017-10-31
6335
9904데이터베이스 기출문제 도와주실분 찾습니다. [4]
김성기
2017-10-24
6504
9903테이블에 데이타 넣기 [6]
이미나
2017-10-17
6636
9902권한 관련 [2]
postgres
2017-10-13
6251
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다