VARCHAR(65535)
필드를 MySQL에서 ID
마다 고유하게 유지 관리하는 솔루션이 있습니까?MySQL에서 <ID>의 고유 VARCHAR (65535) 필드
답변
필드의 값에 해시 함수를 사용하여 동일한 테이블의 별도 고유 필드에 저장합니다. 해당 테이블에 삽입 할 때
create table my_table (
id integer not null primary key,
text_content varchar(65535) not null,
text_hash varchar(128) not null unique
);
, 당신이 계산 SHA256 text_content
필드 해시 및 text_hash
필드에 저장됩니다
그래서 테이블은 다음과 같이 될 것이다. 그렇게하면 text_content
값이 테이블에서 고유하다는 것을 확실히 알 수 있습니다.
DB SIDE 프로그래밍을 좋아한다면, 이 제공하는 트리거에이 로직을 넣을 수 있습니다.
어떻게 충돌을 처리합니까? – Nick
충돌은 ** 매우 드뭅니다 **. 당신이 그들을 찾을 것이라고 생각하지 마십시오. 그것이 바로 그러한 종류의 알고리즘이 설계된 것입니다. 이 질문을 확인하십시오 : http://stackoverflow.com/questions/4014090/is-it-safe-to-ignore-the-possibility-of-sha-collisions-in-practice –
이것은 100 % 방탄으로 해결되었을 수 있습니다. 해시 콜리 전 (hash collision)의 경우 이진 비교 + 충돌의 경우 키 고유성 (key uniqueness)을 위해 자동 증가 2 차 필드. 그런 작업을 수행 할 데이터베이스 솔루션이 있습니까? – Nick
* 고유 ID * - 그게 무슨 뜻입니까? –
ID는 기본 키 엔티티입니다. – Nick