设置 auto_increment_increment = 1 对现有表的影响
Setting auto_increment_increment = 1 effect on existing tables
我创建了一个新的 MySql table 并看到自动递增字段以 3 的值开始并递增 2。我做了一个 SHOW VARIABLES LIKE 'auto_inc%';
并得到这个 -
auto_increment_increment 2
auto_increment_offset 2
我做了一些研究,发现我需要使用-
SET @@auto_increment_increment=1; and
SET @@auto_increment_offset=1;
但我的问题是,将这两个值都设置为 1 会影响行在具有自动递增字段的其他 table 上的插入方式吗?那些 tables 上插入的新行现在会以 1 的自动递增 id 开头吗?还是这只会影响新 table 的发展?
auto_increment_increment
和 auto_increment_offset
的效果不是每个 table,它适用于您插入的所有 table。
如果您在自己的会话中使用 SET
,则变量只会在您的会话中更改。其他会话中的行为不会改变。此外,如果您断开连接并重新连接,您的会话设置将重置为全局设置。
要进行全局更改,您需要使用 SET GLOBAL
。但是更改将在下次 MySQL 服务器重新启动时撤消。
要使更改全局 和 持久化,请编辑 my.cnf
文件以便在每次 MySQL 服务器启动时设置变量,或者在MySQL 8.0 他们添加了一项功能,因此您现在可以使用 SET PERSIST
这样您就可以更改全局变量,并且它会在重新启动后保留设置。
您可以阅读更多相关信息:
我创建了一个新的 MySql table 并看到自动递增字段以 3 的值开始并递增 2。我做了一个 SHOW VARIABLES LIKE 'auto_inc%';
并得到这个 -
auto_increment_increment 2
auto_increment_offset 2
我做了一些研究,发现我需要使用-
SET @@auto_increment_increment=1; and
SET @@auto_increment_offset=1;
但我的问题是,将这两个值都设置为 1 会影响行在具有自动递增字段的其他 table 上的插入方式吗?那些 tables 上插入的新行现在会以 1 的自动递增 id 开头吗?还是这只会影响新 table 的发展?
auto_increment_increment
和 auto_increment_offset
的效果不是每个 table,它适用于您插入的所有 table。
如果您在自己的会话中使用 SET
,则变量只会在您的会话中更改。其他会话中的行为不会改变。此外,如果您断开连接并重新连接,您的会话设置将重置为全局设置。
要进行全局更改,您需要使用 SET GLOBAL
。但是更改将在下次 MySQL 服务器重新启动时撤消。
要使更改全局 和 持久化,请编辑 my.cnf
文件以便在每次 MySQL 服务器启动时设置变量,或者在MySQL 8.0 他们添加了一项功能,因此您现在可以使用 SET PERSIST
这样您就可以更改全局变量,并且它会在重新启动后保留设置。
您可以阅读更多相关信息: