제목 그대로 입니다
begin 후에 인서트가 여러번 일어나는데 모두 성공했을때 commit 을, 하나라도 실패하면 rollback 을 합니다.
근데 여러번 발생되는 인서트중 하나가 성공하면 그 row 의 currval 이 그다음 인서트에서 필요한데,
혹시 commit 이 되기전에는 currval 이 적용되는지 궁금합니다
고수님들 조언 부탁드려요~
참고 : http://www.postgresql.org/docs/8.3/interactive/functions-sequence.html
CREATE SEQUENCE teabl_1_s START 1 INCREMENT 1 MAXVALUE 99999999999999 MINVALUE 1 CACHE 1; select setval('teabl_1_s', 10 , false ) , nextval('teabl_1_s') , nextval('teabl_1_s') , nextval('"teabl_1_s"') , lastval();
CREATE TABLE dept ( dept_id character varying(18) NOT NULL, dept_name character varying(18), CONSTRAINT pk_dept_id PRIMARY KEY (dept_id) )
begin; delete from dept; rollback;
begin; INSERT INTO dept(dept_id, dept_name) VALUES (nextval('teabl_1_s'), 'h부서'); INSERT INTO dept(dept_id, dept_name) VALUES (nextval('teabl_1_s'), 'h부서'); commit;
하기와 같이 테스트 해보았는데요.. 시퀀스 값은 commit 과 상관없이 증감되어 지네요..