今天在用powerdesigner设计数据库模型的时候遇到了MySQL数据库复合主键的自增长问题,一开始时没找准错误根源,Google了半天也没找到点头绪,后来才发现是复合主键的问题,特此记录一下。
看下面的代码:
mysql > CREATE TABLE `_test` ( -> `c1` varchar ( 20 ) NOT NULL DEFAULT '' , -- 主键一:varchar -> `c2` int ( 11 ) NOT NULL AUTO_INCREMENT, -- 主键二:自增序列 -> `c3` varchar ( 255 ) , -> PRIMARY KEY (`c1`,`c2`) -- 注意这里的先后顺序 -> ) ENGINE = MyISAM DEFAULT CHARSET = latin1; Query OK, 0 rows affected ( 0.04 sec) mysql > mysql > INSERT INTO `_test` (`c1`,`c3`) VALUES ( ' AAA ' , ' Robin Home ' ), -> ( ' AAA ' , ' Robin Blog ' ), -> ( ' AAA ' , ' Robin Resume ' ), -> ( ' BBB ' , ' Lily Home ' ), -> ( ' BBB ' , ' Lily Blog ' ); Query OK, 5 rows affected ( 0.00 sec) Records: 5 Duplicates: 0 Warnings: 0 mysql > mysql > SELECT * FROM `_test`; + -- ---+----+--------------+ | c1 | c2 | c3 | + -- ---+----+--------------+ | AAA | 1 | Robin Home | | AAA | 2 | Robin Blog | | AAA | 3 | Robin Resume | | BBB | 1 | Lily Home | | BBB | 2 | Lily Blog | + -- ---+----+--------------+ 5 rows in set ( 0.00 sec) mysql >
值得注意的是,MySQL的这种特性只适用于MyISAM和BDB引擎。
参考链接: http://www.yinyh.com/viewthread.php?tid=143