我建議你只設置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,並在所有行中存儲完全相同的值? –