2011-03-28 2 views
0

해당 행을 삽입하는 동안 AUTO-INCREMENT 필드의 고유 한 해시를 만들고 싶습니다. 같은 뭔가 :삽입 된 행의 ID를 가져 오는 방법은 무엇입니까?

INSERT INTO `table` (`hash`,`salt`) VALUES (MD5(CONCAT(`id`,`salt`)),'1234789687'); 

는 내가 삽입하고있어 동안 행의 자동 증가 ID를 사용할 수 있습니까? 아니면 PHP 또는 뭔가를 통해 그것을 잡아 삽입 때까지 기다려야합니까?

답변

1

짧은 대답은 불가능합니다. 당신의 데시벨 낮은 거래량이있는 경우, 동시성 (간섭에 취약) select max() 비슷한을 사용하여 문제가되지 않을 수 있습니다 내가 업데이트 PHP에서 삽입을 따를 것입니다 Can you access the auto increment value in MySQL within one statement?

update `table` 
set `hash` = MD5(CONCAT(`id`,`salt`)) 
where `id` = LAST_INSERT_ID(); 
1

확실히 모르겠지만 실제로 가능하지는 않습니다. 나는 당신이 생각하고 싶은 이유를 본다. 행을 삽입 한 다음 즉시 업데이트하는 것은 그리 우아하지 않다.

당신이 정말로 당신이 선택하는 동안 그것을 계산할 수있는 경우 또는 DB에 해시를 포함 할 필요가있는 경우 내가 고려할 것 :

SELECT MD5 (CONCAT (id, salt)) 테이블에서 WHERE ...

관련 문제