为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表设置自动增量初始值的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Visual Studio 在 MySQL 中已经存在的表上将列设置为自动增量 [重复]