Mysql复合主键中自增长字段

Google Analytics的ID一般形如:UA-18xxxxx-1,UA-18xxxxx-4, 我们可以将它分成两段来看:字段1:UA-18XXXXX是指帐户的ID;字段2:字段1后附加的1、4,刚分别是指该帐户名下的两个网站。有一段时间很 纠结这样的ID怎么去维护,直到最近查阅到Mysql手册才发现,原来Mysql原生就很好的支持了这种含自动增长字段的复合主键,所以字段2是存储引擎 自动计算出来的。计算方式:MAX(auto_increment_column) + 1 WHERE prefix=given-prefix [1]

不多说,直接看SQL:

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引擎。


转载于:https://my.oschina.net/wayhk/blog/501753

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值