是否可以在mysql中停止特定记录的自动增量并存储重复的数字

时间:2018-03-22 12:37:26

标签: mysql

我想在表中插入一个具有auto_increamented colum的重复值。

我可以像这样插入

auto_incremet
 +---------------+---------
| invoiceNumber | totalAmt | 
+---------------+----------+
|             1 |      200 |  
|             0        158
|             2 |     1200 | 
|             0        122 |
|             3         65  |
|             4 |      240 |          
|             5 |      330 |          
|             6 |       80 |          
+---------------+---------

我不想增加特定记录的值。

是否可以这样做?

可以使用附加表,以便我可以将特定记录发送到其他表并在第一个表中停止增量​​。

但是不能用同一张桌子来完成?

1 个答案:

答案 0 :(得分:2)

是的,但它不能为0.但它可能是1。

MariaDB [wow]> create table test ( id int(11) not null auto_increment, name varchar(15), key id (id));
Query OK, 0 rows affected (0.02 sec)

MariaDB [wow]> insert into test (id, name) values (1, 'mark');
Query OK, 1 row affected (0.00 sec)

MariaDB [wow]> insert into test (id, name) values (0, 'allan');
Query OK, 1 row affected (0.01 sec)

MariaDB [wow]> insert into test (id, name) values (1, 'patrick');
Query OK, 1 row affected (0.00 sec)

MariaDB [wow]> insert into test (name) values ('chris');
Query OK, 1 row affected (0.00 sec)

MariaDB [wow]> insert into test (name) values ('oliver');
Query OK, 1 row affected (0.00 sec)

MariaDB [wow]> insert into test (id, name) values (1, 'damien');
Query OK, 1 row affected (0.00 sec)

观察:

MariaDB [wow]> select * from test;
+----+---------+
| id | name    |
+----+---------+
|  1 | mark    |
|  2 | allan   |
|  1 | patrick |
|  3 | chris   |
|  4 | oliver  |
|  1 | damien  |
+----+---------+

显然这不是一个好主意。创建第二列并将其命名为invoice_id。使用序列表增加它。

但是,回答这个问题,尽管auto_increment必须在一个键上,但它不需要在一个UNIQUE键上,例如主键。