2009-03-24 14 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 

私はこれをachiveするために、任意の「クレイジー」な方法を通過する必要がないしたいが、必要に応じでしょうと思います。

答えて

14

MyISAMテーブルとBDBテーブルの場合、auto_incrementフィールドをキーの第2の部分として持つことができます。

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)を設定します。