Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- JavaScript
- 천단위
- 문자열자르기
- centos
- docker
- jQuery
- 부모창
- php
- RabbitMQ
- install
- ubuntu
- MySQL
- Oracle
- yum
- TPL
- i18n
- mariadb
- Eclipse
- Postfix
- random
- 일괄변경
- Python
- 한글 깨짐
- replace
- Selectbox
- SVN
- 확장자
- TextBox
- smarty
Archives
- Today
- Total
wilson's story
[펌] [MySQL] LAST_INSERT_ID() - 가장 최근의Auto Increment값을 가져오기 본문
반응형
데이터를 추가하는 경우에 다음과 같은 경우가 많이 있다.
"하나의 글을 작성하는데 다수의 첨부파일을 작성할 수 있는 경우"
위의 ERD로 스크립트를 생성해 보면 다음과 같을 것이다.
CREATE TABLE POST (
POST_IDX int(11) AUTO_INCREMENT,
SUBJECT varchar(2000),
NAME varchar(200),
CONTENT text,
WRITTEN datetime,
PRIMARY KEY(POST_IDX)
)
CREATE TABLE ATTACHMENT (
ATTACH_IDX int(11) AUTO_INCREMENT,
POST_IDX int(11),
FILE_NAME varchar(200),
FILE_PATH varchar(2000),
UPLOADED datetime,
PRIMARY KEY(ATTACH_IDX ),
FOREIGN KEY POST_IDX REFERENCES POST(POST_IDX)
)
글이 작성된 후 저장될때 POST테이블에 하나의 값을 추가한후, 다수의 ATTACHMENT를 추가하여야 할것이다.
하지만 어떻게 정확한 POST_IDX를 알아올 수 있는가?
POST를 저장할때 POST_IDX는 자동증가 인덱스를 가지고 있기 때문에 어떤 값을 부여받게 될지 알 수 없다.
다음과 같은 방법으로 처리할 수 있다.
INSERT INTO POST (
SUBJECT, NAME, CONTENT, WRITTEN
) VALUES (
"제목", "이름", "글내용", NOW()
);
INSERT INTO ATTACHMENT (
POST_IDX, FILE_NAME, FILE_PATH, UPLOADED
) VALUES (
LAST_INSERT_ID(), "file.jpg", "/tmp/file.jpg", NOW()
);
위와 같이 LAST_INSERT_ID()를 사용하면 가장 최근에 INSERT시에 입력된 INCREMENT ID값을 가져올 수 있다.
중간에 다른 사용자에 의해 글이 추가되더라도 내가 작성할때 부여된 INCREMENT값이 나온다.
단, 당연하겠지만 같은 커넥션 안에서만 정상적인 결과가 나온다.
http://theeye.pe.kr/trackback/170
반응형