是否可以在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”这是一个好主意,事实上,根据问题的请求,可以使用触发器实现相同的设置。读者练习。此定义中只有一个自动列。