MySQL-如何在数据库中创建自动递增字段?
我正在MySQL数据库中输入记录。现在我想有一个“Serial_Number”字段,每当记录被输入数据库时,该字段就会自动递增 我不希望这个“序列号”字段成为数据库的主键 如何创建此字段(需要设置属性) 我正在使用“SQLYOG”访问MySQL。如果您知道SQL YOG,那么请告诉我如何通过SQL YOG做到这一点。创建表mytable( ID INT IDENTITY(1,1)主键 SN INT标识(1,1) )创建表格mytable( ID INT IDENTITY(1,1)主键 SN INT标识(1,1)MySQL-如何在数据库中创建自动递增字段?,mysql,Mysql,我正在MySQL数据库中输入记录。现在我想有一个“Serial_Number”字段,每当记录被输入数据库时,该字段就会自动递增 我不希望这个“序列号”字段成为数据库的主键 如何创建此字段(需要设置属性) 我正在使用“SQLYOG”访问MySQL。如果您知道SQL YOG,那么请告诉我如何通过SQL YOG做到这一点。创建表mytable( ID INT IDENTITY(1,1)主键 SN INT标识(1,1) )创建表格mytable( ID INT IDENTITY(1,1)主键 SN IN
)我认为您不能拥有自动递增字段:
CREATE TABLE `t` (`dd` int(11) NOT NULL)
ALTER TABLE `t` CHANGE `dd` `dd` INT( 11 ) NOT NULL AUTO_INCREMENT
MySQL said: Documentation
#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
我不认为您可以有一个自动递增字段:
CREATE TABLE `t` (`dd` int(11) NOT NULL)
ALTER TABLE `t` CHANGE `dd` `dd` INT( 11 ) NOT NULL AUTO_INCREMENT
MySQL said: Documentation
#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
AUTO_INCREMENT
列必须有一个与之关联的UNIQUE KEY
约束
例如,这将很好地工作:
CREATE TABLE AutoNotId
(
Id INTEGER PRIMARY KEY,
Auto INTEGER AUTO_INCREMENT,
UNIQUE (Auto)
);
编辑:
ALTER
语句看起来有点像这样:
ALTER TABLE AutoNotId
MODIFY COLUMN Auto INTEGER AUTO_INCREMENT,
ADD UNIQUE (Auto);
但是,我建议使用长语法来指定
UNIQUE
约束的名称;但是您可以随时参考以了解确切的规格。自动增量列必须有一个与之相关联的唯一键
约束
例如,这将很好地工作:
CREATE TABLE AutoNotId
(
Id INTEGER PRIMARY KEY,
Auto INTEGER AUTO_INCREMENT,
UNIQUE (Auto)
);
编辑:
ALTER
语句看起来有点像这样:
ALTER TABLE AutoNotId
MODIFY COLUMN Auto INTEGER AUTO_INCREMENT,
ADD UNIQUE (Auto);
但是,我建议使用长语法来指定
UNIQUE
约束的名称;但是您可以随时参考以了解确切的规范。在MySQL中,表只能有一个自动递增字段,并且必须对它们进行索引
每个表只能有一个自动增量列,它必须被索引,并且不能有默认值
您不希望它成为主键有什么原因吗
如果您想要一个递增的值,可以在每次插入后运行更新来伪造它:
SELECT MAX(serial) + 1 FROM myTable;
UPDATE myTable SET serial = <that number> WHERE id = ...
从myTable中选择MAX(串行)+1;
更新myTable SET serial=其中id=。。。
在MySQL表中,只能有一个自动递增字段,必须对它们进行索引
每个表只能有一个自动增量列,它必须被索引,并且不能有默认值
您不希望它成为主键有什么原因吗
如果您想要一个递增的值,可以在每次插入后运行更新来伪造它:
SELECT MAX(serial) + 1 FROM myTable;
UPDATE myTable SET serial = <that number> WHERE id = ...
从myTable中选择MAX(串行)+1;
更新myTable SET serial=其中id=。。。
在MySQL中无法执行此操作。从文档:
只能有一个自动增量
每个表的列,必须对其编制索引,
并且它不能有默认值。一
自动增量列工作正常
只有当它只包含正数时
价值观插入负数是错误的
被认为是插入一个非常大的
正数。这样做是为了避免
数字“换行”时的精度问题
从正到负,然后
还要确保你不会
意外地得到一个自动增量
包含0的列
对于MyISAM和BDB表,可以
指定自动增量辅助变量
多列键中的列。看见
第3.6.9节,“使用自动增量”
在MySQL中不能这样做。从文档: 只能有一个自动增量 每个表的列,必须对其编制索引, 并且它不能有默认值。一 自动增量列工作正常 只有当它只包含正数时 价值观插入负数是错误的 被认为是插入一个非常大的 正数。这样做是为了避免 数字“换行”时的精度问题 从正到负,然后 还要确保你不会 意外地得到一个自动增量 包含0的列 对于MyISAM和BDB表,可以 指定自动增量辅助变量 多列键中的列。看见 第3.6.9节,“使用自动增量”
你能建议我如何用其他方法来做这件事吗。我通过JDBC驱动程序通过java保存记录。人们已经指出,可以使用唯一索引。这没关系,因为它不是主键。(你如何访问数据库与你的问题无关)。你能建议我如何通过任何其他选择来实现这一点吗。我通过JDBC驱动程序通过java保存记录。人们已经指出,可以使用唯一索引。这没关系,因为它不是主键。(你如何访问数据库与你的问题无关)。谢谢Zxpro。。。你的查询很好。您能告诉我alter命令来更改“orkut”表中现有的“sr_no”字段,以将该字段设置为自动递增且唯一。谢谢Zxpro。。。你的查询很好。你能告诉我alter命令来改变“orkut”表中现有的“sr_no”字段,以将该字段设置为自动递增和唯一的。这不是MySQL语句。这不是MySQL语句。