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するために、任意の「クレイジー」な方法を通過する必要がないしたいが、必要に応じでしょうと思います。
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するために、任意の「クレイジー」な方法を通過する必要がないしたいが、必要に応じでしょうと思います。
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 接頭=与えられたプレフィクスのように計算される。この場合、この
について言うものです。これは、 グループにデータを入れたいときに便利です。
composite primary keysについて考えましたか?
これを実現するには、挿入時のトリガーでgroup_fileld = @inserted_groupを持つgroup_fieldによるテーブルグループからmax(id)を設定します。
これはinnodbテーブルでも機能しますか? –
マニュアルにはMyISAMとBDBだけが記載されているので、私は推測しません。参照:http://dev.mysql.com/doc/refman/5.0/en/innodb-auto-increment-handling.html –
非プライマリキーでこれを行うことはできますか? – BenR