为mysql表设置自动增量初始值

Posted

技术标签:

【中文标题】为mysql表设置自动增量初始值【英文标题】:set auto increment initial value for mysql table 【发布时间】:2011-11-25 08:24:33 【问题描述】:

我正在尝试使用 php 在我的 sql 中创建一个表,但我不确定如何为自动增量字段设置初始值。

这是我目前所拥有的:

function create_table($db_host,$db_user,$db_pswrd,$db_name)

$connect = mysql_connect($db_host,$db_user,$db_pswrd) or die(mysql_error());

mysql_select_db($db_name, $connect);
 $sql = "CREATE TABLE MY_TABLE
 (
table_id int NOT NULL AUTO_INCREMENT, 
 PRIMARY KEY(table_id),
 table_1 varchar(45),
 table_2 varchar(45),
 table_3 varchar(999),
 table_4 varchar(45)
 )"or die(mysql_error());

 mysql_query($sql,$connect)or die(mysql_error());

mysql_close($connect);


所以我需要知道如何在创建时在此表上设置初始自动增量值?

谢谢

【问题讨论】:

这是一个与 SQL 相关的问题,而不是 PHP。 哪一列是自增的? 我需要知道怎么做,在 PHP....... 无,在这张桌子上。但是,我已经知道该怎么做了。我只需要知道如何设置初始值。 @Nav - 这仍然是一个 SQL 问题,即使 SQL 查询是在 PHP 脚本中执行的。 【参考方案1】:

如果表中还没有自增列:

$sql = "ALTER TABLE MY_TABLE ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    ADD INDEX (id);";

然后设置自增起始值:

$sql = "ALTER TABLE MY_TABLE AUTO_INCREMENT = 111111;";

this post 的潜在重复。

【讨论】:

我在这里读到 (tycoontalk.freelancer.com/php-forum/…) 自动增量的值可以尽可能低,mysql 会找到下一个可用的 id(即如果你设置 auto 它不会失败-incriment 低于最高 id) 如果存在任何大于请求值的id 值,则设置 auto_increment 值失败。【参考方案2】:

假设您的自动增量列是第一个:

 $sql = "CREATE TABLE MY_TABLE
 (
 table_1 INT AUTO_INCREMENT,
 table_2 varchar(45),
 table_3 varchar(999),
 table_4 varchar(45)
 ) AUTO_INCREMENT = 231";

这里的起始值是 231。

我将列类型更改为INT,因为您不能使用VARCHAR 进行自动增量。

(顺便说一句,删除这一行上的or die(mysql_error()),它没有意义,因为它只是一个变量创建,而不是正在执行的SQL查询)

【讨论】:

您建议的代码返回错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 10 行的 '= 231 )' 附近使用正确的语法 您更正的代码仍然会产生错误,您不能在非键上自动递增。

以上是关于为mysql表设置自动增量初始值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Java 中为自动增量表创建查询?

如何使用 Visual Studio 在 MySQL 中已经存在的表上将列设置为自动增量 [重复]

MySQL:创建具有自动增量的表并将生成的值与同一表的不同列的值连接起来

设置 SQLAlchemy 自动增量起始值

在脚本mysql中重置自动增量列值

SQL Server 将自动增量主键添加到现有表