제목 | $this->db->insert_id() 궁금한게 있어서 질문드립니다.ㅠㅠ | ||
---|---|---|---|
글쓴이 | 코드이구나 | 작성시각 | 2011/05/17 17:28:36 |
|
|||
완전초보입니다. 영세 업체 들어와서 프로젝트 혼자 다 떠맡겨서 개고생중입니다. ㅠㅠ 염치불구하고 질문들어갑니닥!! 상품을 등록하면서 상품에 대한 문제들도 같이 등록시키는 구조인데요. 상품테이블이랑 문제테이블이 나눠져있고 상품 ID는 auto_increment입니다. 상품 테이블을 insert하고 나서 문제테이블에도 상품 테이블의 id를 넣어줄려면 mysql_insert_id()를 호출하면 된다더라구요. ci에서는 $this->db->insert_id()하면 된다고 알고있습니다. 1. 그런데 insert가 끝난 뒤 insert_id를 호출하는 사이에 다른 누군가가 insert를 하게 되면 잘못된 id를 얻어오게 되지 않나요? 2. 테이블 락이 걸린다는 말을 얼핏 들은 것 같은데 insert 구문이 끝남과 동시에 락이 풀리는 것이 아닌가요? 3. myisam랑 innodb 상관없이 insert_id는 제대로 구동이 되는 것인가요? 4. 마지막으로 저처럼 주문아이디나 상품아이디를 auto_increment로 하는 것은 좋지 못한 방법인가요? 완전 쌩초보가 돼놔서리 궁금한게 너무 많네요 제 질문이 잘못된 질문이라면 검색어라도 가르쳐주세용~ 제발염ㅠㅠ ps. ci포럼에서 너무 많이 배우고 갑니다.;;; (_ _)(ㅡㅡ)(_ _)(ㅡㅡ);; |
|||
태그 | mysql_insert_id,insert_id,lock,innodb,auto_increment | ||
다음글 | db에 데이터 넣을때 주로 배열을 쓰시나요? 아니면 객... (4) | ||
이전글 | 처음설치했는데..오류가...설정문제인가요? (2) | ||
양승현
/
2011/05/17 18:19:28 /
추천
0
|
코드이구나
/
2011/05/18 08:48:04 /
추천
0
완전많이 도움됐습니다!!! 정말감사합니다 이해가 쏙쏙되네요~ㅋ |
/system/database/drivers/mysql/mysql_driver.php
- line 308~
function insert_id()
{
return @mysql_insert_id($this->conn_id);
}
$this->db->insert_id()또한 mysql의 mysql_insert_id()를 리턴 하는거랍니다.
커넥션에 대한 mysql_insert_id 값을 가져오는거지요.
인서트후 셀렉트 하는 방식이 아니라 상관없을거에요.
3. innodb는 사용을 안해봐서 잘 모르겠네요. 하지만 문제 없을듯 보입니다.
4. 주문아이디와 상품아이디등 유니크한값이 필요한곳에 auto_increment를 사용하는게 일반적입니다.
추가로 여러곳에서 하나의 유니크한값을 사용해야 할 경우에는 시퀀스를 이용하는 방법도 있어요.
(미리 유니크한 값을 받아서 프로세스를 처리해야 할경우에도 사용된답니다.)
내부적으로는 저 유니크값을 사용하여 처리를 하고 외부에는 다른값을 보여주곤 합니다.
(상품코드 = ASDF100201010 이런식으로요 ^^;)
도움이 되었을런지 모르겠네요.