Mysql 如何创建从1000开始自动递增的INT字段(不是主键)
我想在我的MYSQL数据库中创建一个字段Mysql 如何创建从1000开始自动递增的INT字段(不是主键),mysql,database,field,primary-key,Mysql,Database,Field,Primary Key,我想在我的MYSQL数据库中创建一个字段INT(11),它从1000开始,在每次INSERT之后递增1 警告:这不是主键 数据库使用MYSQL 6.0和InnoDB引擎运行 如果可能,我可以由谁来实现这一点?您可以拥有一个自动增量列,只要它被定义为键(它不必是主键)。例如: CREATE TABLE auto_inc_test ( ID INT PRIMARY KEY, IncValue INT AUTO_INCREMENT, SomeData VARCHAR(50),
INT(11)
,它从1000开始,在每次INSERT
之后递增1
警告:这不是主键
数据库使用MYSQL 6.0和InnoDB引擎运行
如果可能,我可以由谁来实现这一点?您可以拥有一个自动增量列,只要它被定义为键(它不必是
主键)。例如:
CREATE TABLE auto_inc_test (
ID INT PRIMARY KEY,
IncValue INT AUTO_INCREMENT,
SomeData VARCHAR(50),
INDEX(IncValue)
);
ALTER TABLE auto_inc_test AUTO_INCREMENT = 1000;
(更改表的行设置自动增量的下一个值
)
如果然后运行以下insert(显然,它没有为IncValue字段提供值):
您将获得:
ID IncValue SomeData
1 1000 test 1
2 1001 test 2
3 1002 test 3
尝试下面的代码,希望这能帮助您关注下面代码中的语法部分--KEY(id)--
是否要确保每个数字都是唯一的?如果是,为什么不将它设置为主键呢?如果愿意,您仍然可以在另一列上拥有唯一的索引。如果没有,我恐怕你无能为力,没有什么概念可以自动递增,不能保证是唯一的。是的,每个数字都必须是唯一的。我不能将其设置为主键,因为主键已经存在,并且该字段与主键的含义不同。主键是自动递增的吗?这正是我想要的,但我如何将主键设置为自动递增字段?你不能:每个表只能有一个自动递增列。据我所知,你可以,一个表中只有一个自动增量
。如果你需要两个,你将不得不手动管理其中一个-也许使用触发器?
ID IncValue SomeData
1 1000 test 1
2 1001 test 2
3 1002 test 3
CREATE TABLE IF NOT EXISTS `users`(
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`username` varchar(50) NOT NULL,
`password` varchar(100) NOT NULL,
`email` varchar(80) NOT NULL,
`type` int(11) NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL,
`status` enum('1','0') NOT NULL COMMENT '''0'' for inactive ''1'' for active',
PRIMARY KEY (`username`),
KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1000;