Mysql由客户自动增加

时间:2017-02-06 11:32:09

标签: mysql sql auto-increment

我有一个表Invoices,其中有一些字段,如InvoiceIdCustomerNumber 我希望字段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

2 个答案:

答案 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不起作用,请尝试修改