2009-03-24 4 views
7

MySQL 5.0 (구체적으로) 값이 그룹화 열을 기반으로하는 auto_increment 필드를 갖는 방법이 있습니까?그룹 별 auto_increment

예 :

id name group_field 
1 test 1 
2 test2 1 
1 test3 2 
2 test4 2 
1 test5 3 
2 test6 3 

내가 이것을 실현하려 어떤 '미친'방법을 통해 갈 필요가 없습니다 좋아하지만, 필요한 경우 것입니다 것입니다.

답변

14

MyISAM 및 BDB 테이블의 경우 키의 보조 부분으로 auto_increment 필드를 사용할 수 있습니다 (예 :

CREATE TABLE foo (
    id   INT AUTO_INCREMENT NOT NULL, 
    group_field INT NOT NULL, 
    name  VARCHAR(128), 

    PRIMARY KEY(group_field, id) 
); 

여기에 manual는 대해 생성 된 값이 AUTO_INCREMENT 컬럼이 MAX (auto_increment_column) + 1 프리픽스 = 주어진 접두어로 계산이 경우 이것은

대해 말한다 무엇 . 이는 그룹으로 데이터를 넣으려는 경우 으로 유용합니다.

+0

이 작업은 innodb 테이블에서도 가능합니까? –

+0

매뉴얼에는 MyISAM과 BDB 만 언급되어 있기 때문에, 나는 추측하지 않을 것이다. http://dev.mysql.com/doc/refman/5.0/en/innodb-auto-increment-handling.html을 참조하십시오. –

+0

비 기본 키에서이 작업을 수행 할 수 있습니까? – BenR

0

삽입시 트리거로 group_fileld = @inserted_group을 갖는 group_field에 의해 테이블 ​​그룹에서 max (id)를 설정하면됩니다.