Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-如何在数据库中创建自动递增字段?_Mysql - Fatal编程技术网

MySQL-如何在数据库中创建自动递增字段?

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

我正在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)


)

我认为您不能拥有自动递增字段:

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语句。