2
創建一個用於存儲sequence
數字的數據庫表很容易;但是這種設計適用於所有用戶共享sequence
的事件。我想要爲每個用戶組創建sequence
:此group
可以隨時增長,因爲它是一個數據庫表,即管理員可以隨時創建一個組,並且可以將用戶分配到特定的組。那麼如何按照一組來實現sequence
世代呢?如何爲每組用戶實現序列號數據庫?
創建一個用於存儲sequence
數字的數據庫表很容易;但是這種設計適用於所有用戶共享sequence
的事件。我想要爲每個用戶組創建sequence
:此group
可以隨時增長,因爲它是一個數據庫表,即管理員可以隨時創建一個組,並且可以將用戶分配到特定的組。那麼如何按照一組來實現sequence
世代呢?如何爲每組用戶實現序列號數據庫?
如果你正在使用MyISAM的
http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html
從上面的鏈接下面提取。
對於MyISAM並且可以在多列索引 次級柱指定AUTO_INCREMENT BDB表。在這種情況下,生成的AUTO_INCREMENT列值爲 MAX(auto_increment_column)+ 1 WHERE prefix = given-prefix。當您想要將數據放入有序組時,這是 有用。
CREATE TABLE animals (
grp ENUM('fish','mammal','bird') NOT NULL,
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (grp,id)
) ENGINE=MyISAM;
INSERT INTO animals (grp,name) VALUES
('mammal','dog'),('mammal','cat'),
('bird','penguin'),('fish','lax'),('mammal','whale'),
('bird','ostrich');
SELECT * FROM animals ORDER BY grp,id;
Which returns:
+--------+----+---------+
| grp | id | name |
+--------+----+---------+
| fish | 1 | lax |
| mammal | 1 | dog |
| mammal | 2 | cat |
| mammal | 3 | whale |
| bird | 1 | penguin |
| bird | 2 | ostrich |
+--------+----+---------+
對於您的情況:
CREATE TABLE mytable (
user_id MEDIUMINT NOT NULL AUTO_INCREMENT,
group_id MEDIUMINT NOT NULL,
user_name CHAR(30) NOT NULL,
PRIMARY KEY (group_id,user_id)
) ENGINE=MyISAM;
INSERT INTO mytable (group_id, user_name) VALUES
(1,'alex'),(1,'jenny'),(2,'baz'),(1,'tim'),(2,'danny'),(3,'joe');
SELECT * FROM mytable ORDER BY group_id,user_id;
返回:
user_id group_id user_name
1 1 alex
2 1 jenny
3 1 tim
1 2 baz
2 2 danny
1 3 joe
是否必須設置數據類型爲'MEDIUMINT'? – pheromix 2012-07-13 08:41:57
沒有必要成爲MEDIUMINT。 – sel 2012-07-13 08:44:06