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
운영게시판
최근게시물
MySQL Q&A 30230 게시물 읽기
No. 30230
affected_row 문의드려요
작성자
123
작성일
2012-03-26 14:49
조회수
8,031

 > select * from cnt_tbl;

+------------+-----+
|    date       | cnt |
+------------+-----+
| 20120101 | 10 |
| 20120102 | 10 |
+------------+-----+
 
# 코드부분.
$sql = "UPDATE cnt_tbl SET cnt = cnt-1  WHERE date = '$date' AND cnt > 0";
$this->result = $this->query($query);
$row = $this->affected_rows($query);
if($row)
{
    $sql = "
        INSERT INTO user_tbl
        VALUES('', '$user_id', '$user_nm', '$user_ip', '$date')
    ";
    $this->result = $this->query($sql);
}else{
    return CNT_FULL;
}
 
 
cnt_tbl에 cnt값으로 10이 들어있고, 제가 의도한 것은
cnt_tbl의 cnt를 -1씩 시켜주면서 user_tbl에 유저 정보를 입력하는 것입니다.
 
결론적으로 user_tbl에는 10명의 유저만 입력이 되겠지요.
 
그런데 부하가 많이 몰려오니까 cnt_tbl에는 0이 되었어도, user테이블에는 10보다 많은 값이 insert 되더라구요.
 
주변 분들의 말로는 부하가 몰리면 그럴 수 있다는데 전 잘 이해가 되지 않아서요.
 
이럴 경우 변수에 ROW_COUNT를 넣어주고, insert문에 where절로 @변수 > 0 으로 주면 문제가 되지 않는다는데,
이 둘의 차이가 무엇인지.....
 
이 둘의 차이가 뭐고 왜 두 번째 방식이 명확한지 알려주세요.^^
(또한, 혹시 위의 코드에 문제가 있다면 그것도요..미리 감사드립니다.)
 
이 글에 대한 댓글이 총 2건 있습니다.

  insert into usr_tbl( usrid, usernm, dd )

select 1, 'aa', '2012-03-26'
from (select count(*) AS cnt, '2012-03-26' as dd 
from usr_tbl 
where dd = '2012-03-26' ) as td
inner join cnt_tbl as ct on td.dd = ct.dd
where td.cnt < ct.cnt;
 
이런 비슷하게 현재 갯수 세서 아직 다 차지 않았으면 insert하고 아니면 insert 하지 않고.. 로 한 방으로 끝내버리시는 방법은 어떠실지...
우욱님이 2012-03-26 17:19에 작성한 댓글입니다. Edit

 count를 쓰지 않으려고 하거든요..ㅎ

히히님이 2012-03-29 09:07에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
30233복권 번호 불러오기 [2]
수호
2012-03-30
8680
30232각기 다른 사이즈의 integer형 필드의 최대치 입력 값 질문입니다. [1]
김명진
2012-03-28
8559
30231mysqldump 글자 깨짐현상이 일어나네요
갱이
2012-03-26
8057
30230affected_row 문의드려요 [2]
123
2012-03-26
8031
30229Datetime vs Int 속도?? [3]
지종현
2012-03-20
8317
30228mysql 에서 특정테이블의 개수를 제한할 수 없을 까요? [1]
김대헌
2012-03-20
7725
302274.0에서 5.5 로 업그레이드 방법이 있을까요? [2]
재학
2012-03-20
9072
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다