고유 한 결제 식별자/번호를 만들고 싶습니다. 나는 그것이 일정한 문자열, 연도 및 추가 숫자의 조합이되기를 원합니다. 예 : 'ABC-2013-100001' 청구서 식별자가 고유하다는 것을 확실히 알기 위해 어떻게해야합니까? 고유하고 자동 증가 될 기본 키처럼 billing_id를 유지하려고 생각했습니다. 그런 다음 max (billing_id)를 선택하여 마지막 하나에 1을 추가하고 접두사 "ABC-2013"을 추가 한 다음 테이블에 삽입합니다. 문제는 이것이 3 단계 방법이라는 것입니다. 선택하고, 무언가를하고, 삽입하십시오. 두 명의 사용자가 동시에이 작업을 수행 할 때마다 동일한 숫자가 선택되므로 기술적으로 동일한 식별자가 삽입되는 것과 같은 일이 발생할 수 있습니다. 내가 틀렸고 지나치게 과민 반응을 일으켰습니까? 아니면 고유 한 ID를 생성하는 이런 종류의 공통점입니까? 다른 접근 방식을 취해야합니까?고유 결제 식별자 생성
편집
나는이 같은 짓도록 확인 :
$data = array(
'billing_identifier' => 'law-'.$year."-".$this->db->insert_id()
);
// inserting into billing_identifiers
$this->db->insert('billing_identifiers', $data);
$bill_id = $this->db->insert_id();
을하지만, $ this-> DB-> INSERT_ID() 의미가 있습니다 시작과를 호출 한 후 0 insert 함수는 마지막 id를 얻는다. 한 번에 그렇게 할 수있는 방법이 없습니까?
사용 [마지막으로 삽입 된 ID]를 사용할 수 있습니다 (http://stackoverflow.com/questions/3742554/getting-insert-id-with-insert-pdo-mysql). 이것은 'PDO 버전입니다. 삽입 직후에 호출하십시오. ** 절대 MAX. ** ID없이 "ABC-2013-"를 저장하십시오. –
데이터베이스에서 필드를 고유하게 만들려면 편리 할 수도 있습니다. – randomizer
은 순차적 인 번호의 틈이 있습니까? ('InnoDB'에서 AFAIK 가능한 문제) –