我想在桌面上设置否定的自动生成密钥。
而不是Keys:1,2,3,..,X 我想要键:-1,-2,-3,..., - X
我需要这个,因为我必须创建一个镜像表,在UNION中使用原始和'理解'哪些记录来自原始表,哪些记录来自镜像表。
你认为这是个好主意吗? 是否有一种简单的方法来获得负自动减少键?或者我必须使用触发器吗?答案 0 :(得分:3)
不要这样做。
https://dev.mysql.com/doc/refman/5.7/en/innodb-auto-increment-handling.html说:
为AUTO_INCREMENT列指定负值
在所有锁定模式(0,1和2)中,如果为AUTO_INCREMENT列指定负值,则不会定义自动增量机制的行为。
换句话说,走这条路就是混乱。
MySQL支持一个选项auto_increment_increment
,您可以使用该选项定义每次递增时多的递增方式,但该值必须大于0。
mysql> set session auto_increment_increment = -1;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> show warnings;
+---------+------+----------------------------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------------------------+
| Warning | 1292 | Truncated incorrect auto_increment_increment value: '-1' |
+---------+------+----------------------------------------------------------+
mysql> select @@auto_increment_increment;
+----------------------------+
| @@auto_increment_increment |
+----------------------------+
| 1 |
+----------------------------+
您解释了为什么要这样做:
我需要这个,因为我必须创建一个镜像表,在UNION中使用原始和'理解'哪些记录来自原始表,哪些记录来自镜像表。
使用另一列来指示行来自哪个表:
SELECT 'original' AS WhichTable, column1, column2, column3
FROM MyOriginalTable
UNION ALL
SELECT 'mirror', column1, column2, column3
FROM MyMirrorTable;