2011-03-19 3 views
1

테이블의 각 레코드마다 ID가 있고 Public_ID가 있습니다.MD5와 동일한 MySQL 기본 키 복제

ID는 자동 증가 된 int입니다. Public_ID는 ID에 INT의 MD5 해시입니다.

이 Public_ID를 생성하려면 일반적으로 ID 값과 일치하는 삽입 ID를 얻은 다음 Public_ID를 생성하고 ID가 삽입 ID와 일치하는 레코드를 업데이트하십시오.

삽입 후 계산하거나 업데이트하지 않고도 Public_ID를 생성하는보다 효율적인 방법이 있습니까?

감사합니다, 피터

답변

1

MD5를 사용하여 ID를 해시하는 경우 GUID을 생성 할 수도 있습니다.() (null의 경우, LAST_INSERT_ID) (PK, 해시) 값이

삽입을 테이블에 : 삽입이 완료 될 때까지

+0

이것은 앞으로 나올 미래의 솔루션처럼 들립니다. 고맙습니다! – Peter

+0

이것은 또 다른 질문으로 나를 남겨 둡니다 ... 어떤 테이블에서 수백만 개의 레코드를 처리 할 수있는 대규모 PHP, mysql 응용 프로그램에서 사용할 가장 효율적인 GUID 메서드 생성은 무엇입니까? – Peter

+0

'uniqid'가 충분해야합니다. [이 참조하십시오 (http://stackoverflow.com/questions/1449490/). – Haochi

2

이 있는지. Public_ID를 얻으려면 ID 이외의 것을 해시하십시오. 현재 시간 소인, 테이블의 다른 컬럼, 환경 데이터 또는 이들의 조합을 사용할 수 있습니다.

+0

이렇게 많은 의미가 있습니다. 고맙습니다! – Peter

2

Generall가 삽입 된 행의 ID를 사용할 수없는, 이는 당신이 할 수 없음을 의미 ;

현재 삽입의 ID가 아니라이 전에 수행 된 삽입의 ID 만 받게됩니다. 또한 트리거가 새 행을 변경할 수 없으므로 트리거를 사용하여이를 catch하고 테이블을 업데이트 할 수 없습니다.

삽입/가져 오기/업데이트주기가 계속되는 것처럼 보입니다.

+0

그것에 대해 완전히 권리가 있습니다. 하지만 indetical md5 hash를 사용하는 것은 필요하지 않습니다. – Peter