MySQL - 如何在DB中创建自动增量字段?

时间:2009-09-13 08:12:14

标签: mysql

我正在MySQL DB中输入记录。现在我希望有一个“Serial_Number”字段,只要记录输入到数据库中,该字段就会自动包含。

我不希望这个“Serial_Number”字段成为数据库的主键。

如何创建此字段(需要设置属性)。

我使用“SQL YOG”来访问MySQL。如果你知道SQL YOG,那么告诉我如何通过SQL YOG做到这一点。

5 个答案:

答案 0 :(得分:3)

AUTO_INCREMENT列必须与{1}}相关联。

例如,这可以正常工作:

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); 约束的名称;但您可以随时参考MySQL's Reference Manual了解具体规格。

答案 1 :(得分:2)

在MySQL表中只能有一个自动增量字段,必须将它们编入索引。

  

每个表只能有一个AUTO_INCREMENT列,必须编制索引,并且不能有DEFAULT值。

您是否有理由不希望它成为主键?

如果你想要一个递增值,你可以通过在每次插入后运行更新来捏造它:

SELECT MAX(serial) + 1 FROM myTable;

UPDATE myTable SET serial = <that number> WHERE id = ...

答案 2 :(得分: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 

答案 3 :(得分:1)

你不能在MySQL中这样做。来自doc:

  

只能有一个AUTO_INCREMENT   每个表的列,必须编入索引,   并且它不能具有DEFAULT值。一个   AUTO_INCREMENT列正常工作   只有它只包含正面   值。插入负数是   被视为插入一个非常大的   正数。这是为了避免   数字“换行”时的精度问题   从积极到消极和   还要确保你没有   意外得到一个AUTO_INCREMENT   包含0的列。

     

对于MyISAM和BDB表,可以   指定一个AUTO_INCREMENT辅助   多列键中的列。看到   第3.6.9节“使用AUTO_INCREMENT”。

答案 4 :(得分:-3)

创建表mytable( ID INT IDENTITY(1,1)PRIMARY KEY,

SN INT IDENTITY(1,1)