Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在mysql中停止特定记录的自动增量并存储重复编号_Mysql - Fatal编程技术网

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

是否可以在mysql中停止特定记录的自动增量并存储重复编号,mysql,Mysql,我想在具有自动递增列的表中插入一个重复的值 我可以这样插入吗 auto_incremet +---------------+--------- | invoiceNumber | totalAmt | +---------------+----------+ | 1 | 200 | | 0 158 | 2 | 1200 | | 0 122 | |

我想在具有自动递增列的表中插入一个重复的值

我可以这样插入吗

auto_incremet
 +---------------+---------
| invoiceNumber | totalAmt | 
+---------------+----------+
|             1 |      200 |  
|             0        158
|             2 |     1200 | 
|             0        122 |
|             3         65  |
|             4 |      240 |          
|             5 |      330 |          
|             6 |       80 |          
+---------------+---------
我不想增加特定记录的值

有可能吗

可以使用附加表,这样我就可以将特定记录发送到另一个表,并在第一个表中停止它


但是不能用同一张表吗?

是的,但不能是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\u id。使用序列表递增它


但是是的,为了回答这个问题,虽然自动增量必须在一个键上,但它不需要在一个唯一的键上,如主键。

是的,但它不能是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\u id。使用序列表递增它


但是是的,为了回答这个问题,虽然自动增量必须在一个键上,它不需要位于唯一的键(如主键)上。

我高度怀疑这是否可能,我认为这是数据库中最严重的错误之一。你为什么要这样做?我认为你想做其他事情,你的想法是错误的。即使可能,也应该避免这种情况。重组你的数据库。你可以给一个增量表一个数字,但你用你灵魂的一部分来支付。不同的数据库引擎对它的反应不同,有些将自动递增器设置为新值,有些从下一个空值继续。。。你应该查阅相关手册。我高度怀疑这是否可能,我认为这是你在数据库中犯下的最严重的错误之一。你为什么要这样做?我认为你想做其他事情,但你的想法是错误的。即使可能,也应该避免这样做。重组你的数据库。你可以给一个增量表一个数字,但你用你灵魂的一部分来支付。不同的数据库引擎对它的反应不同,有些将自动递增器设置为新值,有些从下一个空值继续。。。您应该查看相关手册。AI不能是密钥(但通常是个好主意)。您还可以具有多个具有不同增量的AI列。主键必须是唯一的,但不一定是AI。错误1075(42000):表定义不正确;只能有一个自动列,必须将其定义为键与@maaarghk断言的不同,如果您愿意,可以通过这样做将其设置为零,例如,在插入之后:“更新测试集id=0,其中id=2”这是一个好主意,事实上,根据问题的请求,可以使用触发器实现相同的设置。读者练习。此定义中只有一个自动列。AI不能是键(但通常是个好主意)。您还可以具有多个具有不同增量的AI列。主键必须是唯一的,但不一定是AI。错误1075(42000):表定义不正确;只能有一个自动列,必须将其定义为键与@maaarghk断言的不同,如果您愿意,可以通过这样做将其设置为零,例如,在插入之后:“更新测试集id=0,其中id=2”这是一个好主意,事实上,根据问题的请求,可以使用触发器实现相同的设置。读者练习。此定义中只有一个自动列。