我建议你只设置order
字段为AUTO_INCREMENT;并手动计算id
字段的新值。这是一个例子 -
CREATE TABLE IF NOT EXISTS `parts` (
`id` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`order` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`, `order`)
) ENGINE=myisam DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
-- Add some new rows with manually auto-incremented id:
-- SELECT COALESCE(MAX(id), 0) + 1 INTO @next_id FROM parts;
-- INSERT INTO parts VALUES(@next_id, '', NULL);
-- SELECT COALESCE(MAX(id), 0) + 1 INTO @next_id FROM parts;
-- INSERT INTO parts VALUES(@next_id, '', NULL);
INSERT INTO parts SELECT COALESCE(MAX(id), 0) + 1, '', NULL FROM parts;
INSERT INTO parts SELECT COALESCE(MAX(id), 0) + 1, '', NULL FROM parts;
SELECT * FROM parts;
+----+------+-------+
| id | name | order |
+----+------+-------+
| 1 | | 1 |
| 2 | | 1 |
+----+------+-------+
-- Add some new rows for specified `id`, the value for `order` field will be set automatically:
INSERT INTO parts VALUES(2, '', NULL);
INSERT INTO parts VALUES(2, '', NULL);
+----+------+-------+
| id | name | order |
+----+------+-------+
| 1 | | 1 |
| 2 | | 1 |
| 2 | | 2 |
| 2 | | 3 |
+----+------+-------+
还有一个“rowid”,它代表每个插入的行:选择部分的rowid,其中id = somenumber – Louis
http://stackoverflow.com/questions/7085275/multiple-auto-increment-in-mysql –
所以,你想两个字段都是auto_incemented,并在所有行中存储完全相同的值? –