列不是在mysql中自动增量

时间:2011-07-30 09:31:52

标签: mysql

当我插入新行时,treeId列始终为1 插入语句中不包含treeId列。

什么可能导致它不增加?

我的表格代码是

CREATE TABLE `users` (
  `uuid` varchar(36) NOT NULL,
  `parentUuid` varchar(36) DEFAULT NULL,
  `treePath` text,
  `treeId` int(11) NOT NULL AUTO_INCREMENT,
  `firstName` varchar(50) NOT NULL,
  `lastName` varchar(50) NOT NULL,
  `email` varchar(255) NOT NULL,
  `salt` varchar(40) NOT NULL,
  `password` varchar(40) NOT NULL,
  `state` enum('subscribed','registered','banned') NOT NULL,
  `dobMonth` int(11) DEFAULT NULL,
  `dobYear` int(11) DEFAULT NULL,
  `dateSubscribed` datetime DEFAULT NULL,
  `dateRegistered` datetime DEFAULT NULL,
  `gender` enum('unspecified','male','female') NOT NULL DEFAULT 'unspecified',
  `dd` float DEFAULT '0',
  `mainRegion` int(11) DEFAULT NULL,
  PRIMARY KEY (`uuid`,`treeId`),
  KEY `parentid` (`parentUuid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

2 个答案:

答案 0 :(得分:1)

如果您希望它自动增加,请不要在插入中指定treeId字段。

答案 1 :(得分:0)

找到答案(Documentation

  

对于MyISAM和BDB表,您可以在a上指定AUTO_INCREMENT   多列索引中的辅助列。在这种情况下,   AUTO_INCREMENT列的生成值计算为   MAX(auto_increment_column) + 1 WHERE prefix=given-prefix。这是   当您想要将数据放入有序组时非常有用。

CREATE TABLE animals (
    grp ENUM('fish','mammal','bird') NOT NULL,
    id MEDIUMINT NOT NULL AUTO_INCREMENT,
    name CHAR(30) NOT NULL,
    PRIMARY KEY (grp,id)
) ENGINE=MyISAM;

INSERT INTO animals (grp,name) VALUES
    ('mammal','dog'),('mammal','cat'),
    ('bird','penguin'),('fish','lax'),('mammal','whale'),
    ('bird','ostrich');

SELECT * FROM animals ORDER BY grp,id;
Which returns:

+--------+----+---------+
| grp    | id | name    |
+--------+----+---------+
| fish   |  1 | lax     |
| mammal |  1 | dog     |
| mammal |  2 | cat     |
| mammal |  3 | whale   |
| bird   |  1 | penguin |
| bird   |  2 | ostrich |

因为我在uuid上有一个联合键(总是唯一的)和treeId上的联合键(这是自动增量),所以每次都创建一个新的增量组。