我有一个表Invoices
,其中有一些字段,如InvoiceId
,Customer
,Number
我希望字段Number
自动增加,但每customer
这是它的样子的例子
例如
InvoiceId| Customer| Number
:------- | ------: | :----:
258 | A | 1
2568 | B | 1
85475 | B | 2
63 | B | 3
64 | A | 2
65 | B | 4
67 | C | 1
答案 0 :(得分:1)
这似乎有可能only using MyISAM storage engine:
MyISAM备注
对于MyISAM表,可以在多列索引中的辅助列上指定AUTO_INCREMENT 。在这种情况下,生成的值 对于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;
返回:
+--------+----+---------+ | grp | id | name | +--------+----+---------+ | fish | 1 | lax | | mammal | 1 | dog | | mammal | 2 | cat | | mammal | 3 | whale | | bird | 1 | penguin | | bird | 2 | ostrich | +--------+----+---------+
在这种情况下(当AUTO_INCREMENT列是a的一部分时) 多列索引),如果删除,则重复使用AUTO_INCREMENT值 任何组中具有最大AUTO_INCREMENT值的行。这个 甚至对于具有AUTO_INCREMENT值的MyISAM表也会发生 通常不会被重复使用。
强调我的。
因此,如果您使用的是其他存储引擎,则需要手动生成序列ID。
答案 1 :(得分:1)
ALTER TABLE tablename CHANGE number number INT(11) AUTO_INCREMENT PRIMARY KEY;
如果CHANGE不起作用,请尝试修改