MySQL AUTO DECREMENT而不是AUTO INCREMENT,这可能吗?
MySQL AUTO DECREMENT instead of AUTO INCREMENT, is it possible?
我想在 table.
上自动生成负键
代替键:1,2,3,..,X
我想要键:-1,-2,-3,...,-X
我需要这个,因为我必须创建一个镜像 table 以便在 UNION 中与原始文件一起使用 'understand' 哪些记录来自原始文件 table 哪些记录来自原始文件 table镜子 table.
你认为这是个好主意吗?
有没有一种简单的方法来获得负自动递减键?还是我必须使用触发器?
不要这样做。
https://dev.mysql.com/doc/refman/5.7/en/innodb-auto-increment-handling.html 说:
Assigning a negative value to the AUTO_INCREMENT column
In all lock modes (0, 1, and 2), the behavior of the auto-increment mechanism is not defined if you assign a negative value to the AUTO_INCREMENT column.
换句话说,沿着这条路走就是混乱。
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 |
+----------------------------+
您解释了为什么要这样做:
我需要这个,因为我必须创建一个镜像 table 以便在 UNION 中与原始 'understand' 一起使用,其中记录来自原始 table 和哪些来自镜子table.
使用另一列来指示 table 行来自:
SELECT 'original' AS WhichTable, column1, column2, column3
FROM MyOriginalTable
UNION ALL
SELECT 'mirror', column1, column2, column3
FROM MyMirrorTable;
我想在 table.
上自动生成负键代替键:1,2,3,..,X 我想要键:-1,-2,-3,...,-X
我需要这个,因为我必须创建一个镜像 table 以便在 UNION 中与原始文件一起使用 'understand' 哪些记录来自原始文件 table 哪些记录来自原始文件 table镜子 table.
你认为这是个好主意吗? 有没有一种简单的方法来获得负自动递减键?还是我必须使用触发器?
不要这样做。
https://dev.mysql.com/doc/refman/5.7/en/innodb-auto-increment-handling.html 说:
Assigning a negative value to the AUTO_INCREMENT column
In all lock modes (0, 1, and 2), the behavior of the auto-increment mechanism is not defined if you assign a negative value to the AUTO_INCREMENT column.
换句话说,沿着这条路走就是混乱。
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 |
+----------------------------+
您解释了为什么要这样做:
我需要这个,因为我必须创建一个镜像 table 以便在 UNION 中与原始 'understand' 一起使用,其中记录来自原始 table 和哪些来自镜子table.
使用另一列来指示 table 行来自:
SELECT 'original' AS WhichTable, column1, column2, column3
FROM MyOriginalTable
UNION ALL
SELECT 'mirror', column1, column2, column3
FROM MyMirrorTable;