MySQL - 如何在数据库中创建自动压缩字段?
我在MySQL DB中输入记录。现在,我希望有一个“Serial_Number”字段,只要记录输入到数据库中,字段就会自动放大。MySQL - 如何在数据库中创建自动压缩字段?
我不希望这个“Serial_Number”字段成为数据库的主键。
如何创建此字段(需要设置属性)。
我使用“SQL YOG”来访问MySQL。如果您知道SQL YOG,那么请告诉我如何通过SQL YOG来实现。
的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
约束的名称的长手语法;但您可以随时参考MySQL's Reference Manual了解具体规格。
创建表MYTABLE( ID INT IDENTITY(1,1)PRIMARY KEY,
SN INT IDENTITY(1,1)
)
是一个mysql语句吗? – 2009-09-13 08:18:14
MySQL不使用IDENTITY。 – 2009-09-13 08:18:43
这不是MySQL声明。 – 2009-09-14 10:07:55
我不认为你可以有一个自动递增领域:
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
你能建议我怎样才能做到这一点的任何其他选择。我通过JDBC驱动程序通过java保存记录。 – 2009-09-13 08:18:45
人们已经指出你可以使用唯一索引。这是可以的,因为它不是主键。 (您如何访问数据库与您的问题无关)。 – 2009-09-13 08:47:15
在MySQL表中只能有一个自动增量字段,它们必须被索引。
每个表只能有一个AUTO_INCREMENT列,它必须被索引,并且它不能有DEFAULT值。
难道你不想让它成为主键吗?
如果你想要一个递增值,你可以通过每次插入后运行更新掰过来:
SELECT MAX(serial) + 1 FROM myTable;
UPDATE myTable SET serial = <that number> WHERE id = ...
在MySQL你不能做到这一点。从DOC:
只能有一个每个表AUTO_INCREMENT 列,它必须被索引, 并且它不能有默认值。如果仅包含正数 值,则 AUTO_INCREMENT列正常工作 。插入一个负数是 被视为插入一个非常大的正数的 。这样做是为了避免 精度问题,当数在从正到负和 也“包装” ,以确保你不小心 得到一个AUTO_INCREMENT 列包含0
对于MyISAM和BDB表,您可以使用 在多列键中指定AUTO_INCREMENT次 列。请参阅 第3.6.9节“使用AUTO_INCREMENT”。
谢谢Zxpro ...你的查询工作正常。 您可以告诉我alter命令来更改我的现有“orkut”表中的“sr_no”字段以将此字段设置为auto_increment和唯一。 – 2009-09-13 08:29:51