为MySQL中的所有新表随机设置AUTO_INCREMENT

时间:2014-03-05 08:42:43

标签: mysql

有没有办法在MySQL中创建新表时自动将AUTO_INCREMENT设置为随机值?

一些背景知识:作为开发人员,我经常使用Moodle的多个本地安装。 有几次我被我的SQL语句中的细微错误所困扰,我将两个不同的表中的ID混合在一起,但是这两个表的ID都被掩盖了。例如在开发过程中,ID为1的论坛中还有一个ID为1的帖子,因此一个混淆了forum.id和post.id的SQL语句似乎在本地工作,但是当部署到测试服务器时会开始出错

如果AUTO_INCREMENT总是有一个随机起点,那么很可能会立即发现这样的错误。

注意 - 对于一个Moodle安装,每当我创建一个新表时,调整代码以设置随机AUTO_INCREMENT值都是微不足道的。不幸的是,我目前为不同的客户端提供了30-40份Moodle代码库,并且经常添加新副本,因此在我所有本地数据库中自动运行的解决方案将非常有用。

2 个答案:

答案 0 :(得分:0)

您可以使用ALTER TABLE声明:

ALTER TABLE your_table AUTO_INCREMENT = 13125;

你可以使用像php这样的东西编写脚本:

<?
  $q = "ALTER TABLE your_table AUTO_INCREMENT = ".rand(10000,99999);
?>

我不知道这对你的需求有多大。

让我知道你的想法。

答案 1 :(得分:0)