我正在MySQL DB中输入记录。现在我希望有一个“Serial_Number”字段,只要记录输入到数据库中,该字段就会自动包含。
我不希望这个“Serial_Number”字段成为数据库的主键。
如何创建此字段(需要设置属性)。
我使用“SQL YOG”来访问MySQL。如果你知道SQL YOG,那么告诉我如何通过SQL YOG做到这一点。
答案 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)
)